新手前端的面经总结(已拿网易offer)

程序源代码

共 7659字,需浏览 16分钟

 ·

2020-12-07 13:53

作者:凤鸣于岐

https://zhuanlan.zhihu.com/p/36466421

4月19日,本人拿到了网易的口头offer。已经决定去网易-杭研院实习。精神紧绷了一个半月,现在可以好好放松了~ 接下来与大家分享一下本人找实习的经验。虽说是找实习,相关经验在秋招时也应该是适用的。

以下经验主要偏向技术岗,且更多地侧重于前端。

简历

分享两个简历模板:

  • 超级简历[1]
  • 程序猿简历通用模板(请自学Markdown语法)[2]

关于怎么写简历,知乎上有许多宝贵经验,我就强调以下几点:

  • 实事求是,不怎么了解的东西别往简历上写。
  • 项目经历、学生工作、兴趣爱好等最好有详实的数据和论据支撑,如“该项目后期经过XX方面的性能优化,效率提升22.7%”、“举办XX活动,参加人数XX人,持续XX天”、“爱好唱歌,校园十佳歌手三等奖”。

而且一定要体现你起了哪些作用。

网申和内推

简历写好后就进入这个阶段啦。建议大家关注以下几个微信公众号:

  • 校招导师
  • 内推军
  • 互联伴

和这几个网站:

  • 实习僧[3]
  • 牛客网[4]
  • 软院官网-招生就业[5]

注意,部分公众号和网站提供收费服务,我觉得毫无必要。不要在这方面浪费钱,网上免费的资源已经多到眼花缭乱,像我这样善良的主动分享经验的网友也挺多。

这个阶段我犯了一个大错误。内推找得太早,导致复习得还不够充分就接到了阿里和腾讯的电话,头几次电话面试缺乏经验发挥失常,浪费了这两家公司的内推机会。现在想起来都捶胸顿足……可以考虑在各大公司内推/网申截止日期前几天再投递。

邮箱最好用163、gmail等邮箱,但京东、美团、腾讯等公司建议使用QQ邮箱。每天都要注意有没有收到新邮件,注意要翻一翻垃圾邮件,可能被误识别。

除非有很明确的目标,我建议大多数同学还是海投。我自己就投了三十多家,叫得上名字的公司几乎都投了。笔试、面试也是很宝贵的经验,哪怕倒贴钱我也要多尝试,何况投简历、笔试和远程面试根本就不要钱呢?

笔试

非技术岗的笔试喜欢考智力题,这点类似公务员考试。牛客网上可以刷题,或者买公务员考试的资料也行。至于具体的产品经理、策划等还考些别的什么,我不太了解。

大多数公司技术岗笔试的套路差不多,选择题+编程题,有时候还会有问答题。选择题的考点,除了根据你选择的岗位有所侧重,更多地还是考察基础知识。C/C++/Java基础、数据结构、操作系统、计算机网络一定要重点复习(用学校的教材即可),如果有多余时间,最好再看看编译原理。牛客网上也可以做对应的专项练习。

至于编程题……这也是我心中的痛啊……羡慕学ACM的同学,在这方面优势就很大了。LeetCode、LintCode都可以刷刷。书籍推荐《剑指offer》,图书馆有旧版的。LintCode的阶梯训练-书籍里也有《剑指offer》的全套练习题,九章算法上也可以搜每道题的题解。刷通了《剑指offer》,除去头条笔试以外的编程题,做出一半还是比较轻松的。大多数公司的编程题支持多门语言。你可以挑选自己喜欢的语言,熟悉相关的API,免得到时候要自己实现一些原本就有的函数。但最好还是练一练C/C++,面试的时候面试官不一定会你掌握的语言,但多少懂点C/C++。

如果是在牛客网笔试,“校招小管家”微信公众号会在笔试前提醒你。吐槽一下赛码网,没有牛客网好用。面试

面试有电话面试、视频面试、现场面试。电话面试更多地会考察你的知识点、谈谈你过去做过的项目,很少会问你复杂的算法题,即使问了也是让你讲讲思路。视频面试和现场面试就会让你写比较细致的代码了,到时候要仔细考虑边界情况和特别用例。不过我很少见到要求你一定要把代码跑起来的面试官。

面试会有自我介绍环节,稍微准备一下就好。我的自我介绍通常就半分钟。

面试的时候一定要放松,语速尽可能平缓。遇到不会的知识点请大方地说你不会(或者像我这样说:“这个知识点我不了解,以下是我的一些猜测……”或者“您能给一些提示吗?”)。硬着头皮回答只是在浪费双方的时间。

面试通常有好几轮,一般是若干轮技术面加上最后一轮的HR面。阿里的HR面很玄学,其他公司还好。但我至今也想不通为啥链家的HR面把我刷掉了……

去大公司面试就像追女孩子,如果面完试很久都没回你消息,你也别多问,免得两边都不愉快。如果是小公司可以冒险尝试一下,因为小公司的流程不那么正规,有周旋的余地。

以下是我有印象的各大公司的前端面试题。括号内为答案和吐槽。

阿里

阿里内推和网申都开始得比较早,但如前文所说,大家可以不急着投,等准备充分了再去试试运气。可以在网站的个人中心里查看自己的面试进度。希望大家不会看到“已回绝”三个字。简历面,电话(太紧张+没睡醒的缘故,我在这里挂了) 简述 Vue 的生存周期(创建,挂载,更新,销毁)

  • 你用过 Bootstrap 写过库吗?

  • 让你用 Bootstrap 设计一个系统,怎么设计?

(这问题我现在都不知道怎么答)

  • Express 和 Koa 框架的区别、优缺点(参见知乎)

  • Node.js 的优缺点(擅长I/O密集、不擅长计算密集……)

腾讯

腾讯和阿里都喜欢电话突然袭击,这一点很不友好…… 腾讯的面试进度可以在微信公众号里查看。

一面,电话

  • ES6 里 let 和 var 的区别(前者块作用域,后者函数作用域;

  • let深入理解---let存在变量提升吗?

  • 系统优化方案?

  • 简述一下 CDN 加速服务?

  • 简述事件委托机制(事件捕获、冒泡,父元素监听)

  • HTTP 里的304状态码了解吗?

(面试-状态码)

  • 简述 ES2017 里的 async 和 await (你不知道的JS)

  • 谈谈你印象最深的一个项目(照实说)

二面,电话(挂了)

  • 你觉得要怎样成为一名优秀的前端工程师?

(快速学习、善于沟通)

  • HTTP 、 HTTPS 、 HTTP2 的区别?

(关于HTTP你该知道的)

  • 简述一下用户访问网站的过程(缓存,DNS查询,建立链接,请求,响应,收到页面,解析DOM树,显示内容,首屏加载完成,可交互)

  • 你有什么要问我的吗?

(见后文小结里的HR相关文章)

笔试后北京一面。体验极差!不能一次面完嘛!复试还是改电话吧……

  • 问项目(照实说)

  • 列举数组的用法(建议分类列举,栈、队列、映射、删除等)

  • 数组去重(直接倒进集合再倒出来)

  • 跨域(图像ping, JSONP , CORS , webSocket 等)

  • 本地存储( cookie , localStorage , sessionStorage 等)

  • HTTP , TCP , UDP , IP (参看计算机网络教材)

  • 进程通信,有名和匿名管道(有名管道和无名管道)

  • 你有什么要问我的吗?

(见后文小结里的HR相关文章)

一面过了后公众号显示进入复试状态,但二面一直没消息。成备胎了?

头条

头条面试问的算法题比起笔试题简单多了。面试前会有小姐姐和你约时间。

一般是在牛客网上视频面试,会让你在在线编译器里写代码。顺利的话一次三面。头条回绝人倒是干脆,面完试十五分钟内就会给你打电话。像我这样被挂起来的倒是挺少见……

一面,视频

  • 简述 CSRF (跨站请求伪造)的攻击和防御措施(CSDN博客-CSRF)

  • 在线写代码,给定一个数组和一个正整数N,求一个和小于N的最长连续子数组(我两层for循环暴力解了,在面试官引导下做出了一定的优化)

  • 在线写代码, CSS 的单行和多行截断?

( overflow , text-overflow )

  • Vue 的双向绑定原理(事件监听, getter 和 setter )

  • 别的记不清了……当时网不好

二面,视频(三面还没给我消息,估计凉了)

  • 在线写代码,给定一个二叉树,求根节点到叶子节点的路径上所有节点值之和(DFS,先序遍历,递归)

  • 在线写代码,给定两个有序数组,合并为一个有序数组,不许使用 js 的 concat 和 sort 方法(两个指针)

  • 在线写代码,两栏布局,左边定宽右边自适应,等高( flex , grid , float , position ,方法很多随便说几个)

  • 简述自定义事件实现方法(参看红宝书)

  • 简述 getter 和 setter 写法(参看红宝书)

  • TCP 三次握手和四次挥手,拥塞控制(参看计算机网络教材)

  • 你有什么要问我的吗?

(见后文小结里的HR相关文章)

链家

我也不知道我为啥挂了……

当时面试地点在凯伦饭店。环境舒适,面试官也挺温和。技术面难度不大,但问得比较细。我印象不深,一二面合起 来写吧。

技术面

  • 跨域方式( JSONP ,  webSocket 等,但原理要搞懂)

  • Web 本地存储( Cookie , localStorage , sessionStorage 等)

  • Cookie 相关的头字段和格式( Set-Cookie:

name1=value1, expires='...',expires='...' )

document.cookie 的格式,写一个封装后的函数(格式同上,函数就是花式处理字符串)

  • session 原理(基于 Cookie ,或查询字符串,或 ETag )

  • 手写代码,不产生新数组,删除数组里的重复元素(排序, splice() )

  • 项目细节(问了我一堆后端,还好当年项目搭档的源码我还有印象)

  • 你有什么要问我的吗?

(见后文小结里的HR相关文章)

二面面试官对我的评价:动手能力强,能解决问题,但所学知识杂而不精,不过学生都这样。

HR面

基本是天南海北地侃大山,家庭住址、经济条件、寝室关系、参加过的竞赛、做过的项目、职业规划等都会关联到……我可能在这个环节说错话了。言多必失,不要太实诚,也不 要撒谎。

网易

网易的面试体验挺不错。它的微信公众号会给你叫号,前台小姐姐也会提醒你,每一面结束后都可以找前台小姐姐查询面试结果。而且食堂超级好吃!还可以边吃饭边吸猫!面试地点在杭州研究院一楼大厅。环境舒适,就是座位有点不够用。

一面

  • 6道基本技术问题,居中、闭包、块级元素和行内元素等(答案略)

  • 某个项目的页面布局方式,缓存的设计和优化方式(本地存储和协议相关的)

  • ajax 的原生写法(创建 XHR 对象, open() , setRequestHeader() , send() , onreadystatechange )

  • vue-router 的原理( hash , HTML5 新增的 pushState )

  • 关于 ajax ,我再强调以下方面。

//open()接受3个参数:请求类型、 URL 和是否异步的布尔值
//GET方式通常这样发:
xhr.open("get""example.php?name1=value1&name2=value2"true)

//可以设定请求头,包括自定义请求头,比方说这样:
xhr.setRequestHeader("MyHeader""MyValue");

//可以这样取得一个包含所有头部信息的长字符串:
var myHeader = xhr.getResponseHeader("MyHeader");
var allHeaders = xhr.getAllResponseHeaders();

//POST方式有这几个地方要改:
//请求头要重设,数据会以key1=value1&key2=value2的方式发送到服务器
xhr.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
//获取表单
var form = document.getElementById("user-info");
//序列化表单,发送的内容传入send()
xhr.send(serialize(form));

//也可以这样传值:
var data = new FormData(form);
//再传一点别的
data.append("name""Nicholas")
xhr.send(data);
  • 别的不记得了……

二面

  • 面试官:“你觉得你擅长CSS还是JS?”

  • 我:“JS。”

  • 面试官:“好,那我问你一道CSS的问题。”

  • 我:“???”

  • CSS 三栏布局,左右定宽,中间自适应( flex , grid 等)

  • 解释构造函数、对象、原型链之间的关系(看红宝书)

  • 手写代码,实现原型式继承(看红宝书)

  • 手写代码,实现借用构造函数(看红宝书)

  • Vue 双向绑定原理(事件监听, getter 和 setter )

  • Virtual DOM 和 diff 算法( DOM 树,分层比较, key , DocumentFragment )

  • jQuery 链式调用的原理(知乎-jQuery链式调用)

  • 最近碰到的技术难题,不一定是前端(我答了B站的爬虫与反爬虫)

  • 关于反爬虫,请求头中的这两个字段要修改。Host :

  • 发出请求的页面所在的域。

Referer :

  • 发出请求的页面的 URI 。

注意, HTTP 规范将这个头部字段拼写错了,而为保证与规范一致,也只能将错就错了(这个英文单词的正确拼法应该是  referrer )。

HR面

HR小姐姐似乎对我们学校挺熟悉的,但好像不是校友…… 谈一谈过去做过的项目、面对的难题(和UI的沟通问题,顺便引出我后来自学了平面设计。

  • 又提了提爬虫

  • 家在哪里(照实回答就行)

  • 未来职业规划(表示出你想在公司长久待下去,继续进步就行)

  • 具体的技术发展方向(我答的是“能支持上亿用户使用的前端架构”)

  • 为了往这个方向发展,你所做的努力(我答的是“在看《高性能网站建设》、自学后端,顺便提了一下‘东北Java第一人’姜国海老师”)

  • 预测一下前端未来的发展趋势(我答的是“自动化”)

  • 拿了哪家的offer?

(……还是照实回答吧)

实习时间(我建议把时间段说得宽松一些,到时候真的冲突再商量)

京东

京东的面试小哥哥有点逗。因为是临时改成电话面试,过程不太正规,题目直接用手机的摄像头传给我…… 初面已过,复试原本显示待安排,后来估计是招满人直接给我挂了。

一面

  • 列举块级元素和行内元素( div 等, span 等)

  • absolute 依据的定位元素是?

(非 static 的祖先元素)

  • 几道 js 基础题(多去牛客网刷题)

  • Vue 里 v-if 和 v-show 的区别?

(文档)

  • parseInt() 和 array 的 map 方法的参数?

(看红宝书)

面试官对我的评价:基础还可以,做项目的能力是有的,但缺乏深度,要多关注一些细节

去哪儿网

距离去哪儿网笔试快一个月了,我都以为我凉了,结果在北京面腾讯的当天下午连续接到三个电话……只有一轮技术面+一轮HR面,然后就给我发了口头offer,相当地干脆利落……

去哪儿网好像更注重考察你对框架、工具的应用,对于基础考得反而不多。而且还考了我 jQuery ,别的公司都不怎么考的……

一面

  • webpack 用过吗?

  • 如何处理图片、 CSS 文件?

(各种 loader )

  • 使用 flex 布局写移动端布局(注意 flex-direction 要改)

  • jQuery 的 delegate 原理(事件冒泡与捕获)

  • 不止这些,但别的忘了……

HR面

  • 薪资

  • 可实习时间(我说了7~9月)

  • 职业发展规划(有节制地胡说八道)

  • 别的不记得了……因为整个过程速度太快,来不及记忆……

搜狐

我投了三份简历给搜狐,结果三份全被刷了……但4月18日早上搜狐面试官突然加我微信好友!于是当天晚上十点视频面试。

一面

  • HTML5 的语义化标签( header , footer , main 等)

  • position 的取值和含义(W3Cschool-position属性)

  • z-index 的蜜汁用法(这是一个“拼爹”的属性)

  • CORS 跨域文件共享的请求头(询问允许的方法和域)

  • 获取页面滚动高度( window.pageYOffset )

  • 函数节流和去抖,写滚动监听函数(函数节流和去抖)

  • 你有什么要问我的吗?

(见后文小结里的HR相关文章)

百度

虽然百度这几年发展势头落后于AT,甚至快被京东赶上了,毕竟瘦死的骆驼比马大,面试还是相当有难度和水准的。本人很遗憾地挂在了二面。看来只能投奔网易的怀抱了~ 百度也是在牛客网上进行远程视频,流程和头条差不多。

一面

  • 询问你的项目经验、学习经历、主修语言(照实答)

  • 解释ES6的暂时性死区( let 和 var 的区别)

  • 箭头函数、闭包、异步(老生常谈,参见上文)

  • 高阶函数(呃……我真不太清楚这是啥,听起来挺像闭包的)

  • 求N的阶乘末尾有多少个0,在线码代码或讲思路(求因数,统计2、5、10的个数)

  • 给一个小于一百万的数,求和它最接近的 Fibo 数(我的思路是简单地求数列然后求差,面试官说 Fibo 数超过34个以后就超过一百万,可以把34个数都求出来然后研究状态转换……)

一面面试官给我的评价:“基础扎实,逻辑还可以,但代码风格不太好(ES5和ES6混用,封装不好),未来发展方向不明确。可以进入第二轮面试。”

二面

二面面试官说话不太清晰且声音太小,对面环境也比较嘈杂(好像也在面试?),这点不如头条。头条是在独立的小隔间里。

  • CSS布局( Grid 和 flex 都考且考察细致)

  • 数组的随机排序(我蒙了个答案,好像还算对。

  • 打乱数组

  • JSON 对象的深度克隆(遍历递归,或者序列化和反序列化)

  • 简述动画写法( setTimeout , requestAnimationFrame , CSS3 ……)

  • 列举“传统”的异步(……这题啥意思?不会)

  • Node 的多线程,高并发,安全(我都不会……问后端大佬吧)

  • 听说过 PWA 吗?

(没听说过,不会……)

  • 解释 event loop (听过,不太会)

  • 服务端渲染,计算首屏和白屏时间(不太会……首屏白屏

  • 服务器如何强制更新后的文件替代客户端缓存的文件(不太会……好像和MD5有关?

还有很多不太记得了,反正我都不会…………

二面面试官给我的评价:“二面failed。学习能力不错,反应快,知识的广度有,但缺乏深度,不够系统。建议研读V8引擎源码,Node源码,花半年时间。”原来我已经进步到可以看源码的程度啦?虽然挂了,但听面试官这么说还有点开心~

小结

看到这里,相信读者也已经感觉到,许多面试题是有套路和重点难点的。我分享几篇总结这些套路的文章。

  • 大厂前端面试考什么?[6]
  • 前端进阶系列[7]
  • 这可能不只是一篇面经[8]
  • diff算法[9]
  • 最后一面-HR面[10]

都是前辈们留下的宝贵经验,值得好好吸收。我的找工作总结就写到这里,感谢大家祝愿大家能找到自己满意的工作offer

—————END—————



喜欢本文的朋友,欢迎关注公众号 程序员哆啦A梦,收看更多精彩内容

点个[在看],是对小达最大的支持!


如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~

浏览 8
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报