作者:四季奶青大杯正常糖
链接:https://www.nowcoder.com/discuss/613722?type=2&order=3&pos=32&page=1&source_id=discuss_tag_nctrack&channel=-1
来源:牛客网
楼主是三月初一个晚上偶然在牛客网上看到的该部门发的信息, 立马投简历。第二天下午HR小姐姐就打来电话约当天晚上的一面。
一面问题如下:
0、自我介绍,学习前端的动机,介绍项目, 问了我本科哪里的(因为我本科不是计算机专业, 所以简历没写, 接下来每个面试官都会问本科哪里的要登记, 所以这个必须要写, 不要怕掉面子 😓 )
计算机基础部分:
1、进程和线程有什么区别
2、TCP 和 UDP 各自的特点和区别
3、DNS 协议工作流程
4、CDN 是什么(讲一下内容分发网络的定义, 负载均衡, 提高响应速度)
5、https 的加密过程
js
1、js 为什么设计为单线程
2、js 数据类型有哪些,讲一讲 symbol 的作用,怎么能区分引用类型的对象
3、es5 实现一个继承有哪些策略
4、列举this指向, 看代码说结果(看代码说结果要注意的是, 引用一个函数和调用执行一个函数二者之间的区别要看清, 因为只差一个括号而已)
5、js 如何创建一个闭包
6、js 处理异步, 讲一下js的事件循环机制
7、【高频问题】window.onload和 DOM 中的 document.contentloaded 的区别
css
1: 选择器的优先级(补充一点 !important)
2、盒子模型有哪两种, IE 的盒子模型有什么特点
3、讲一下 position 的取值
4、 【高频问题】flex 实现一个圣杯布局
vue
data 为什么是函数
父子组件如何通信
双向绑定和响应式数据原理
下面代码输出的结果是什么?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var length = 10;
function fn() {
return this.length+1;
}
var obj = {
length: 5,
test1: function() {
return fn();
}
};
obj.test2 = fn;
console.log(obj.test1())
console.log(fn() === obj.test2())
代码题:
1、递归写多叉树的高度
2、【高频问题】
1
2
3
4
5
// 需要实现的函数
function repeat (func, times, wait) {},
// 使下面调用代码能正常工作
const repeatFunc = repeat(console.log, 4, 3000);
repeatFunc(“helloworld”);//会输出4次 helloworld, 每次间隔3秒
3、爬楼梯问题:爬楼梯时,每一步会有两个选择:爬一个台阶和爬两个台阶,问:楼梯总台阶数为n,则一共有多少种爬法,写一个函数f,使得:总的爬法= f(n)。举例:n=3时,则共有:(1,1,1)、(1,2) 、(2,1)三种爬法,则f(3)=3。
本题本质是一个斐波那契数列。
一面到此结束, 面试官最后问我说:“你是不是没怎么刷题就直接找面试了啊?” 说的真准, 这就是我第一次投简历。
二面难度直线上升, 一面问的主要还是基础方面内容, 二面问题的出发点就全都集中在项目实践了:
0、 自我介绍,学习前端动机
1、讲一件回调的原理, 浏览器捕获到事件并执行的原理(他本来想问事件捕获和事件冒泡, 但被我理解成让我讲 addEventListener 函数的原理了,瞬间把我问懵了)
2、如何设定一个常量对象?
3、讲一讲为什么要跨域, 跨域的同源策略是为了防止哪些攻击?
4、讲一讲 XSS 攻击可能有的攻击场景, 列举防范 XSS 攻击的方式
5、用 SDK 开发单页面 SPA 应用, 后端如何即时得知前端发生了页面跳转? 因为我不知道 SDK 是什么所以我说了一大堆 vue 的生命周期函数, watch 监听, 我又说 ajax,面试官直接怼我“我还能不知道 ajax?你怎么什么都答不到点上?同样都是汉语, 和你沟通为什么就这么难!?”直到他解释了 SDK 是什么,我才弄明白他想问的其实是路由原理,就是 hashchange 和 popstate
6、假如有一个电商应用,用户在下单的时候需要一个收货地址列表,这个组件你怎么设计?
7、讲一下keep-alive有哪些使用场景
8、讲一讲 Object.defineProperty
算法题:
1、【高频问题】存储10W个电话号码实现搜索时提醒, 用多叉树解决
2、【高频问题】剑指offer 62题
这里只谈到了冰山一角, 真相是二面的面试官把我怼得怀疑人生。直到最后我说我可以尽快过来面试, 他才说那我就再给你一次机会准备三面,最后是一句感叹: 你这基础还是差挺多啊…
三面:
0、自我介绍, 学习前端动机
(三面我实在记不清太多问题了,见谅…)
1、【经典问题】讲讲浏览器输入 url 后敲回车,发生了什么
2、GET 和 POST 的区别
3、讲一讲你的项目, 什么场合下使用 GET 什么场合下使用 POST
4、讲一讲 COOKIE 和 JWT
5、让你做一个在线聊天室, 你怎么做
算法题:
1、leetcode 56题
2、多个降序链表, 求前K大的数的算法的时间复杂度
3、【经典问题】多个有序数组合并
4、讲讲红黑树是什么
最后反问环节, 面试官评价我说 :“还是要在基础方面提升自己吧”
总结:
1、字节的面试难度还是挺大的, 当然也是因为我太菜…
2、字节很看重算法题, 事先看面经找到高频算法题很重要,其次刷 leetcode 和剑指offer
3、如果应试者的项目比较low, 面试官就不会问项目
4、最重要的一点, 自学的过程中千万不能看了看面经, 然后 百度一下不知道的名词,去 CSDN 之类的地方,看看帖子就以为自己会了。对于一个知识点的掌握与否, 熟知其应用场景和可替代性是非常重要的。否则结果就是,面试小厂轻松, 面试各种大厂就统统一轮游。除非遇到质量非常高的帖子,版主如亲妈一般,把任何知识点都讲到极致透彻。因为面试官不会像考名词解释一样, 直接把知识点的名词丢出来问你这是什么。