前段时间鼓起勇气投了人生第一个实习,没想到反馈很好,以后学习的路上也会越来越自信
一面
- 简单介绍自己
- 怎么想到做前端的?
- 网络知识:http和https,浏览器缓存(强缓存与协商缓存等),缓存工作原理(不会,没答出来),哈希模式与历史模式,单页面与多页面。
- CSS知识:盒模型简介、两种box-sizing值的区别,如何实现居中,margin塌陷如何解决?BFC简介与设置
- HTML:是否了解DOM?
- JavaScript:深拷贝与浅拷贝的区别,函数传参是深拷贝还是浅拷贝?进行比较时进行的类型转换。Null==Undefined?事件代理的写法?Ajax与Promise等异步操作
- Vue:先问项目中遇到的一些问题。Vue的生命周期、钩子函数。为什么选择Vue?是否了解Vue的双向数据绑定是如何实现的?如何实现组件间通信(父子、兄弟)?为什么data是一个函数的形式?考察vue中computed和watcher:设计一个购物车计算总价的实现,根据选中商品的数量进行变化。
- 代码题:层序遍历多叉树,使用多个数组作为队列分别储存总结果和本层结果等即可。因为第一次用飞书面试写代码,非常紧张,也没有太弄清楚数据结构,所以写的并不好,但思路给面试官说明白了,所以也过了
一面结束,面试官说对CSS和Vue还比较熟悉,但是JS的基础知识比较差,需要加强学习。没想到狠狠看了好久之后二面基本没怎么问这些东西。
二面
- 拉拉家常,问问情况,自我介绍
- 对前端的理解?前端需要做什么?
- 网络:cookie、localStorage、sessionStorage,从输入URL到显示页面发生了什么?了解CDN吗?
- 算法题:这次三道题都是非常简单的题,连我这样的菜鸡都能完全写对,可能前端并不要求很高的算法水平。(1)扑克牌中的顺子,一开始看成同花顺了,后来发现建一个set就好了剑指 Offer 61. 扑克牌中的顺子 - 力扣(LeetCode) (leetcode-cn.com)(2)最大子序和剑指 Offer 42. 连续子数组的最大和 - 力扣(LeetCode) (leetcode-cn.com)基础DP(3)一道关于JS异步操作顺序的题,问最后输出字符串的顺序,需要了解宏任务和微任务是在不同队列。
二面比较简单,面的老哥也很和蔼亲切,随后约了leader面,leader感觉比较冷淡,有点不耐烦的样子,面的时候非常紧张,脑子都不转了
三面
- 自我介绍
- 设计一个微信QQ等第三方登陆的功能(我怎么知道?)会不会有数据泄露的风险(???)
- UDP与TCP的区别,三次握手
- 多进程与多线程的区别?(多进程在多个CPU上,多线程是在一个CPU上调度)
- 代码题:返回数组中首次出现目标数字的位置,没有则返回-1 。 本来用indexOf即可解决,结果面试官说不能体现代码能力,非用二分,分了半天我也没分明白,心情沉重,越到后面越紧张,他给提示也听不懂,这一面体验不好
总的来说,大部分人学习都是两条路,第一条是按部就班学好学校教的课程,在面试中体现学习能力,另一条则是自己学习相关的技术,在面试中展示已有的知识