铜三铁四, 难逃被动毕业。 面试了24家, 包含各大,中,小厂。 两个月终于上岸了。
程序员找工作真的太难了,要背八股文,刷算法题,复盘项目知识,各种流程,面试回答技巧 和 HR斗智斗勇,比高考还难。
HTML篇
- meta 有哪些属性
- HTML5 新标签使用过哪些
- 不使用js 如何刷新页面?
- 如何实现引导层?
- seo TDK ?
- 块级元素与内联元素区别
- 图片撑开元素底部为什么有空白?如何解决
CSS 篇
- flex: 1 是哪些属性的缩写
- 如何实现一个瀑布布局
- 画一个三角形
- 画一个正六边形
- rem em vw 移动端适配方案?
- css 定位
- BFC
- 实现一个loading 加载动画 任意一种
- 水平垂直居中方式
- 盒模型?
- css 选择器优先级
- 如何实现元素高度是宽度的一半
- 实现列表元素宽度自适应布局
基础篇
理论
- 解释型语言与编译型语言区别?
- 事件循环 (出现概率极其大)搞懂 宏任务和微任务
- 浏览器渲染机制
- script 标签 defer和async区别
- 原型链说输出
- es5 有哪些继承方式?优缺点?
- this的指向?
- 执行上下文和作用域
- 判断数组的方法
- 判断类型的方法
- 基础类型和引用类型为什么要分别存放在栈和堆中
- localstorage sessionStorage cookie 区别?
- 闭包? 闭包的作用?
- js 哪些会导致内存泄漏
- 重排和重绘? 如何避免?
- 垃圾回收机制
- requestIdleCallback 和 requestFrameAnimation
- 事件触发阶段 捕获 冒泡 目标
- 如何解决小数精度问题? 0.1+0.2 !=0.3
- 判断页面可见性
- forEach 中断循环?为什么不能中断?
- async/await 实现原理
- es6 module 和 commonJS 区别
- es5继承与es6 继承的区别
- let const var
- Map 与普通对象区别?
- 箭头函数 和 普通函数区别?
- es6 使用过哪些?
- 输入一个url 之后发生了什么? (十之八九被问到)
- 如何解决跨域
- 跨域如何携带cookie
- 浏览器两个tab 之间如何通信?
- 说一下什么是堆
手写题
- 手写call apply bind 各自应用场景有哪些?
- 实现new
- 节流 防抖
- 深拷贝
- 封装一个jsonp
- 实现数组的reduce
- 手写instanceof
- 手写对象可迭代
- 手写Promise Promise.all Promise.race
- 实现一个flatten函数
- 实现一个柯里化求和的函数 例如:curryingSum(1)(2)(3)()
- 实现一个链式调用以及流程控制sleep 2s 后打印电脑 在等1s后打印手机
const playBox = new PlayBody('xiaoming')
playBox.start('xiaoming').sleep(2000).play('电脑').sleep(1000).play('手机')
- 版本号比较大小 例如:4.2.1 > 3.2.0 > 2.3.0-rc > 2.3.0-beta > 2.3.0-alpha > 2.3.0
- 判断一棵二叉树 是否是平衡二叉树?
- 判断 二叉树是否是对称
- 二叉树中序遍历
- 二叉树的公共祖先节点
- 判断链表是否有环
- 查找链表的中间节点
- 反转链表
- 快速排序
- 因式分解
- 两数之和
- 螺旋数组
- 括号匹配
- 数组去重
- 查找数组中出现两次的元素
- 数组索引随机
- 数组中1到100 删除一个数 顺序打乱 如何查找
- 顺序数组中查找元素 多个相同元素 查找最左最右的索引
- 实现图片分个下载 1s无效应则为失败
- 二维数组中查找元素
- 广度优先遍历 对象嵌套
React篇
- react diff ? 与 vue diff 比较?
- react 和 vue 有哪些区别?
- hash 和 history 区别 以及实现原理
- hooks 和 class的区别,hook有哪些优化点 为什么设计hooks
- react hook 如何避免组件重复渲染
- useEffect 和 useLayoutEffect 区别
- react如何触发组件更新
- setState是异步还是同步
- key 的作用
- setState 之后发生了哪些
- 如何立即获取改变后的状态
- usestate为什么不能放条件判断中
- mobx 实现原理
- mobx 和 redux 区别?
- 说一下react fiber 设计思想
- react内部怎么区分多个usestate
- React是如何在每次重新渲染之后都能返回最新的状态
Vue篇
- vue diff
- Vue3 的特点? 比vue2 有哪些优势
- vue nextTick 实现原理
- v-for 和 v-if 优先级
- computed watch methods区别?
- 父组件与子组件渲染顺序
- v-model 实现原理
- v-model 和 async修饰符区别
- 组件通信方式有哪些?
- 数据驱动原理
- 组件中的data为什么是个函数
- keep-alive 实现原理
- template 中多次绑定一个相同状态 源码中如何处理
- vue 事件如何绑定多个方法
- new Vue 后发生了什么
- 说一下各个生命周期干了什么
- 模板编译过程
- Vue3 为什么使用 Proxy Reflect
- vue-loader 作用
- vue 何时收集依赖
- 虚拟DOM 作用
- hash 模式下 如何 处理a标签锚点问题
webpack 篇
- webpack常用loader和plugin
- webpack 的构建过程
- 优化构建过程的手段
- webpack 处理代码优化方式
- webpack 常用属性
- loader和plugin区别
- webpack 热更新原理
- 打包优化 如何减少打包体积
网络篇
- TCP 和 UDP 区别?
- DNS 查找过程
- TCP 为什么是三次握手 不是两次
- 常见状态码
- http缓存
- http1.0 2.0 3.0 有什么不同
- htt2.0多路复用的缺点
- https 与http区别 https 为什么安全?
- options 请求作用
- cdn 缓存策略
设计模式篇
- mvc和mvvm有什么区别?
- 如何实现观察者模式
- 工厂模式
- 单例模式
- 策略模式
TS 篇
- TS 和 JS 比较
- any void never unknown 区别?
- interface 和 type 区别?
- 泛型是什么? 使用场景
- react 中 使用interface 和 PropType 区别
项目篇
- 大文件上传
- 长列表优化 虚拟列表如何实现
- 首屏优化
- ios 刘海屏问题如何解决
- 页面有弹窗 页面随弹窗一起滚动问题
- 安卓文字垂直居中问题
- 资源预加载方案
- 安卓键盘弹出遮住输入框问题
- h5 与 客户端通信方式
- 移动端适配方案有哪些
- 如何实现页面多个主题颜色