部分面试过程
字节篇
0817 14:00 一面 60 分钟
- vue 原理 , 手写实现数据劫持 (里面有坑) (代码)
- 问了数据劫持,收集依赖的过程 ,实现的方式
- get post 区别 长度限制,请求的次数,谁限制了长度
- 文件上传的字符编码类型,之间的区别以及为什么会这样,form 表单默认是谁
- 挖项目,为什么要这样做,解决了啥问题
- 几个常见状态码 304 引出浏览器强缓存和协商缓存
- 谈一个设计散点图的思路,设计,实现,优化方面
- 聊了下他们的开发流程,用到的技术
- gg
0831 16:00 一面 60 分钟
- css 盒模型哪些,区别
- css 实现一个三角形
- let var 问你输出什么
- js 数组哪些方法 写一个 reduce(没写)
- arr = Array.from({ length: 2 }).fill({ a: 1 }) => [{a:1},{a:1}]
- promise.then().then() promise.catch().then() ok 不? promise 其他东西
- 实现一个 match 函数 判断括号是否匹配
([{}{}()])
(代码) - 反转链表 (代码)
- 写一个深拷贝 (代码)
- 聊了下为什么没走校招,机会蛮大的
- 聊了下他的工作,然后加了个微信,可以给我讲点经验
0902 13:00 二面 80 分钟
- js 获取元素在页面中的位置 (代码)
- css 动画 ,js 怎么实现, aniationRequestFrame
- 找数组中两个元素和等于 target 的数组 (代码)
- 找数组中几个元素和等于 target 的数组 (代码)
- 介绍防抖节流 手写防抖 ,里面用到 function.call (代码)
- 介绍 call 然后区别 call apply bind
- 实现一个 call
- 实现一个 new
- 什么是同源政策,跨域哪几种 ?具体实现 ?非常非常详细
- http2 新特性 实现的原理
- 反向代理 正向代理区别
- 浏览器缓存
- vuex 详细介绍
- react 和 vue 区别
- ts 优点
- ts 编译过程,扯了点编译原理
- 移动端适配方法,怎么实现响应式,原理
- 设计一个 tip 思路,考虑优化 ,扩展
- 实现一个单例模式 (代码)
- 很流畅
- 了解到字节前端岗位进去后,根据部门需要以及个人兴趣爱好分配具体部门
0903 14:30 三面 50 分钟
- 解释 什么是面向对象 ,要点特性 ,区别
- 常用的数据结构,特性 ,区别
- 实现双向链表 ,实现一个插入节点的方法 (代码)
- webpack 重要配置 ,loader 和 plugins 区别 ,优化
- n 级台阶的几种路劲 (代码) 思路错了 (其实就一个递归)
- 心态崩了 ,面试官脸色不大好看
- 七层网络模型
- tcp udp 区别
- 浏览器缓存
- keep-alive 原理(自己傻逼了,猜也能猜出来,说了个没深入了解)
- 实习过程中自己的不足
- 英语四六级
- 学习方法过程
- n 皇后 没写 换题了
- 返回 n 以内的质数数组 (我想着优化,判断质数条件没写完) 到时间了
- 没啥聊的了
- 有点压力面的感觉 三面到此结束
百度篇
0811 一面
- 一个元素一个按钮,元素垂直居中. 点击按钮后,元素一秒后,水平左右移动 100px 旋转 90 度 动画持续 100ms (代码)
- 实现一个函数 , 判断对象中的属性来自哪一个 原型链对象 (代码)
- div 上下布局 底部固定高度 ,顶部自适应 (代码)
- position 值 区别 以及黏性定位 : sticky
- 判断一个数组的方法 Array.isArray() / Object.prototype.toString.call() 注意 typeof [] == ‘object’
- 事件绑定的方法, 优点 , html 中 onclick / js 中 addEventListener (多个顺序执行) 和 onEvetnt (多个后者覆盖前者)
- 事件传递顺序: 父级捕获-> 自身绑定顺序->父级冒泡
- http 缓存相关 200 304 区别 200 返回 max-age 发现失效 如果有 Last-Modified,则再次向 web 服务器请求时带上头 If-Modified-Since ,服务器对比 If-Modified-Since 和文件最后修改时间 返回 200 或者 304
- 网络请求放在什么阶段? / 子组件? 父组件?
- js 中 this 指向问题, 显示修改 this 方式以及区别
- connection:keep-alive 介绍
- 前端性能优化 / 打包方面的优化
- linux 查看网络以及端口占用
- linux 杀掉进程
注意点(体现程序员的专业和严谨)
知识点考察
- 回答问题,先委婉简短地说出重点,但是要全部概括,不能漏,然后再深入详细描述(比如七层网络模型)
- 让你介绍某个知识点时, 先介绍 ,再谈作用,再说优点,再说缺点,然后怎么弥补缺点(比如 jsonp 跨域)
- 实在不会的问题,让面试官换一个,或者问到你的痛点,直接说没去深入了解,赶紧换个题,
保证心态
。(比如 react diff 算法) - 用词准备,描述到位,注意说法专业 (比如 数据库关系模型 能说 N 对 N ,就别说多对多)
编程题
- 编码题保证编码规范,(缩进,空格,尾随分号)
- 算法题要让他看出你有程序员的思维 (先解决 ,再优化)
- 新语法啥的都用上 (专业,学以致用,要理解,别一问只会用,不知道原理)
- 写注释理清思考的方向 (思路清晰)
开放性问题
- 问你程序员鄙视链怎么看
- 程序员 35 老龄化危机怎么看
- 怎么学习的 (专业性网站,影响力大的书籍,大牛博客,《c++,从入门到放弃》)
- 职业规划
- 怎么看待加班
其他杂项
- 算法(leetcode 剑指 offer)算法可视化
- linux 命令 (网络 ip,端口占用,文件查找 ,vim 编辑器)
- 浏览器原理 (进程 和 线程 通讯)
- js 机制 (预解析,单线程,事件循环 ,运算符优先级)
- 还有一些奇葩 bug-
- 实习的开发流程和操作规范