废话
2 月中旬在牛客上投了不少字节,大多都杳无音讯了。有天教育业务的发我邮件邀约面试了,并且 HR 小姐姐加了我,然后预约了几天之后的面试时间。
面试平台使用的是牛客网,摄像头 + 编程
HR 小姐姐很好看
一面
面试官看着挺亲和
- 自我介绍
没怎么准备的很简短的自我介绍...然后追问了项目的一些简单情况,聊聊天
- 平常怎么学习前端的
老问题了,追问了对框架的了解,追问了对 react 的了解(我简历是 Vue)
- 实习时间
- 说一下网络七层模型
- HTTP 和 DNS 属于哪一层
- TCP 和 UDP 属于哪一层
- 说一个表示层的应用
大意了嗷,当时按照五层模型学的,OSI 的会话和表示还真的没有去了解,真的要好好恶补这两层的知识
- 介绍下 HTTP 协议
吧啦吧啦讲了一大通
- HTTP 协议规范了些什么东西呢
嗯,应该是上一题没答的足够好,面试官追问了。然后还提示了,比如他是一个单向/双向?
- HTTP 的状态码有哪些
- 各状态码的含义、出现场景
可能上一回答太简短,追问了。所以很详细地都讲了,讲了挺久
- 详细讲下 304 状态码
这个挺重要的,多次问到,建议大家把浏览器缓存原理和流程好好看一下
- 说一下 HTTP 缓存的策略,比如缓存的关键 Header 是什么
- TCP 和 UDP 的区别
之前的回答提了一下,这次更详细地补充了区别
- TCP 如何确保可靠传输的呢
- TCP 连接三次握手过程
详细地说了,以及为啥握手是三次
- TCP 连接四次挥手过程
详细地说了,以及为啥挥手是四次
- JS 的基本数据类型
当时脑子进水了,拿手指头数,Number、String、Boolean 和 Symbol,知道是 7 种的,可我怎么想都想不到了,然后就说有 4 种类型了😂面试官多次问我还有其他数据类型吗,可我说不出了😂不知道面试官心里怎么想的...(漏了 BigInt、null、undefined)
- 还有其他数据类型吗?有什么呢
估计面试官对我刚才的回答产生了怀疑,开始追问了。但是之后我恢复正常了,一切没毛病
- 如何判断 JS 的数据类型呢
讲了子类型,讲了四种方法以及各自的优缺点和应用场景。在讲 typeof 时我还提到了需要注意的 null,可我仍然没反应过来 null 是数据类型,xswl
- 判断数组有哪些方法呢
- 浏览器的同源策略
吧啦吧啦讲了一大通
- 跨域该如何处理呢
介绍了几种方法以及应用场景
- 讲一下 CORS 的关键 Header,讲一下 CORS 的具体如何实施白名单呢
做了些补充,以及简单请求、预检请求做了些补充和说明。还讲了加名单 / * 的区别和需要注意的地方。还讲了跨域的学习、实践的过程(聊着聊着面试官不知道为啥嘴角上扬开心地笑了..)
- 其他的跨域方法讲下
追问了,详细讲了 JSONP 方法,代理服务器方法
- 在使用了 iframe 的情况下,该如何去解决同源策略
大意了,这方面了解的不多,讲了下自己的想法和理解,回去好好恶补
- 讲一下 ES5 和 ES6 的区别吗,讲一下新特性
感觉 ES6 真的太多了..一时间就说不出太多的区别和新特性了....这个问题可以反映我对知识体系的梳理和构建并不好,回去再好好准备
- ES6 的箭头函数和以前的普通函数的区别
讲了箭头函数的特点、优点,以及一些限制,以及普通函数的创建过程和箭头函数的创建过程
- 箭头函数可以作为构造函数吗(可以使用 new 操作符的调用吗)
- 追问:为什么不能作为构造函数呢
- 说一下 Vue 2.x 响应式的原理
终于到框架了..我最不擅长的。然后给面试官背八股文听,还顺便背了 3.x 的响应式八股文,然后讲到了 Proxy,这个我知道,就吧啦吧啦讲了一大通
(其实是知道一些的,但是没有实践,有空真要好好手写以下框架的部分实现,唉)
- 说一下 Vue 的列表渲染中的 key 属性作用
这个懂,并结合场景详细说了,吧啦吧啦
- key 的值用 index 可以吗,是否能解决刚才的问题
这个问题问得挺好的,还好我 key 不是背八股文😂,之前实践过,就顺便回答了
- 代码题:斐波那契数列
属于很简单的代码题..可我没有实践过...想用递归可就是弄不出来,边界出了点问题。最后还是用动态规划写出来了(我脑子又开始进水了)
- 代码题:找出和最大的连续子数组
也是属于很基础的题,可我当时理解错题目了,完全写成其他题了,之后意识到了后又改,发现又理解错题又写错了...唉,LeetCode刷题几乎为 0,算法题也是上个星期才开始刷,包括这题都还没做过..都是眼高手低。来不及想怎么用动态规划了,马上写了个暴力枚举法,可就是测试不成功,md我太菜了,面试官说算了你已经过了一面了不用写了,可我当时气不过非要弄出来😅..
- 反问环节
问面试官对我整个面试有什么看法和建议
面试结束了,面试官说后面是拔高的一些测试,二面面试官会找你的。
总结:
好好抽空把框架的原理看看,最好能都实践了。
以及多刷算法题..我这方面挺薄弱
二面
一面面完就关电脑打算出去吃晚饭了,没想到突然接到面试官电话。原来字节是一面二面连着的..面试官说算了一小时之后再面试,估计是也要吃饭吧
- 聊项目
问了挺多关于项目情况,以及对项目提出一些疑问,以及根据简历上写的细节来考我扩展方面的东西
- 代码题:数组,用 reduce 方法实现 map 方法
第一次做,难度不难,有些细节和特殊情况需要注意
- 代码题:
// 需要实现的函数 function repect (func,times,wait){} // 使下面代码能正常工作 const repectFunc = repect(console.log, 4, 3000) repectFunc('helloworld') //会输出 4 次 hellworld,每次间隔 3 秒难度不难,做完后面试官让我说了下思路
- 刚刚提到了宏任务,说下什么是宏任务
- JS 为什么会把任务分为宏任务和微任务
- CSS 接触的多吗?如何用 CSS 画一个圆
- 像素最小是 1px,但如果我要画 0.5px 的直线该怎么办
一开始有些疑惑,因为像素是最小的显示单位。面试官说如果产品确实有这种需求,从效果上来看怎么实现。我给出的方案是改变缩放页面 / 分辨率,然后再计算出真实的 px
面试官说思路是对的,就是通过缩放,CSS 中 transform 的 scale 为 0.5 即可实现。大悟,我把这东西给忘记了
- JS 里面 Map 和 Set 的区别
这个我之前都看到过,但是很惭愧都忘了,只记得看过文章有用 Map 来优化 if-else 代码,但是也不记得具体的了..好好恶补一下
- 说下对 webpack 了解
吧啦吧啦讲了很久
- 最近在看什么技术方面的东西
- 反问环节
问面试官对我整个面试有什么看法和建议
第二天收到 HR 的消息说二面过了,预约三面。因为面试官出差了所以推迟了一个星期,目前还没有面
更新:今天下午刚面完的,热乎的!
三面
- 实习时间
嗯..面试官都很关注这些,毕竟希望越早去越好,实习时间越长越好
- 介绍下项目经历、技术经历
讲了一大通
- 介绍简历上项目有什么技术难点,又是怎么解决的
讲了一大通,和面试官聊了很多,又讲到了性能优化、重构做了哪些工作等等
- 面试官问了 Vuetify(我简历上面的);他有什么优点;为什么选择使用它;你认为它有哪些地方不够好
聊了很多自己关于 UI 组件的看法,Vuetify 和 Element 的对比等,以及选择 Vuetify 的原因和优点、缺点
- 代码题:把 ajax 封装成 promise 的形式
面试官看我简历上有封装所以出了个封装题..我太菜了我连 XHR 实例的一些方法和回调函数给忘记了..一般都是去搜,没有刻意去记,害,说白了还是用原生用的少了现在
- 代码题:写一个 vue 组件,实现类百度的搜索框,可以出现自动的下拉列表,里面出现可能的和文字相关的信息(自动补全)
牛客的网页也没任何代码提示..只好手撸 vue 组件..第一次实践..看似比较简单的功能实则实现的细节有很多,比如性能方面的防抖、异步请求方面需要注意的地方(乱序!!可能先发出的请求后返回)、处理下拉框时的细节等。
我对组件的实现还是比较浅的,很多细节没有做到位。面试官还说目前只是让你先实现一个搜索框,都还没让你实现一个通用的搜索框组件呢,如果让你实现又该怎么去做?(别骂了别骂了~~)
- 反问环节
问面试官对我整个面试有什么看法和建议
很详细地回答了我刚才的表现,尤其是我第二个代码题里需要注意的地方..受益匪浅,非常感谢!
全程 1h,面试总体体验很好,面试官人挺好的哈哈,总体感觉自己两个代码题都没有表现的很好,很多细节没有注意到!以为可能凉了吧。结果今晚 HR 约面试,明天 HR 面
HR面
目前还没有面
全部评论
(15) 回帖