我的前端面经

6,963 阅读11分钟

校招基本结束了,感觉自己面试没参加几场,基本都倒在了笔试里。。。但还是决定总结一下遇到的面试题,写成面经分享给大家。总的来说面试给我的体验很棒,很喜欢面试时的感觉,而且遇到的面试官大都很棒很专业。

腾讯实习一面:

  1. 最近在看哪些前端方面的书?
  2. js的基本数据类型有哪些?
  3. 解释下什么是闭包?
  4. CSS常用的样式有哪些?
  5. 了解CSS3么?
  6. 知道哪些HTML5的新特性?
  7. 了解AJAX么,如何实现跨域?
  8. 对jQuery了解多少?看过源码么?
  9. 在浏览器中输入域名到显示,其背后是怎样的一系列流程?
  10. 如何优化页面的显示速度?
  11. 了解数据结构么?常用的数据结构有哪些?
  12. 用C语言的数组实现一个队列(手撕代码)

腾讯是四月实习生的面试,是我第一次面试。体验不错,有点紧张,准备不足,答得糟糕。最后手写C的代码真没有想到,简单的写了点东西,被面试官说离数据结构还有一定差距。。

阿里内推电话一面:

  1. 简单介绍一下双向循环链表。
  2. 介绍一下树的前中后三种遍历方式。
  3. 简单说一下最短路径算法。
  4. 随便列举出五个状态码。
  5. 讲述一下域名到页面的过程。
  6. HTTP方法除了GET和POST还有哪些?
  7. GET请求和POST请求有长度限制么?
  8. 头信息中与HTTP缓存有关的信息有哪些?
  9. CSS中的position属性有哪些值?
  10. 如何水平垂直居中一个div?
  11. 解释闭包。
  12. 哪些操作会造成内存泄漏?
  13. 前端的安全性问题有哪些?
  14. JS实现继承有哪几种方法?
  15. 有涉及后端的项目么?
  16. 了解React、Angular、Node么?

唯一的一场电话面试,当时正在许昌实习,突然接到电话被吓到了的。面试全程都是被碾压的,完全被问懵了。当时7月多还没开始准备校招,还是自己当时准备不足。

CVTE校招一面

  1. Canvas画饼状图(个人项目)
  2. js如何实现定时器?简述定时器原理。
  3. 左固定右自适应的两列布局(手撕)
  4. 了解HTTP协议么?
  5. 为什么HTTP协议基于TCP协议?TCP与UDP的区别。
  6. HTTPS和HTTP的端口号各是多少?HTTPS中的S是什么?
  7. 了解跨域么?详细讲述一下JSONP的原理。
  8. 简单实现一个原型继承(手撕)
  9. 实现一个方法,输入为若干个数组,合并、去重、排序并返回(手撕)
  10. 写一个快速排序算法(手撕)
  11. 前端学习多久了?

CVTE校招二面

第一场正式校招面试,本应该一天三面面完,但当时已经太晚了,所以只面了两面,第二天补得HR面。一面中规中矩吧,手撕了很多代码。自己把问题都回答出来了,问了一些简历上的项目。 二面是三场校招面试里感觉最好的一场,面试官是50岁左右头发花白的大叔,有气场也很和蔼。第二面确实没有问什么详细的技术问题,完全是跟我聊项目。大叔应该不是专业前端,我多次想深入都被拽了回来。一直停留在架构和设计模式层面,然后讨论怎么增加应用的用户粘性,怎样从用户的角度改善我的项目。在知识面上有了很大的收获,聊得很投缘。

在平时学习之余,也可以多看看其他的互联网知识,说不定面试时就能用到,为你增色不少。我之前看过一些产品和项目相关的东西,二面时我都以为自己在应聘产品经理了。

趣医网校招一面

  1. SQL语句(笔试题)
  2. jQuery的选择器有哪些?
  3. 了解Angular么?
  4. 常用的排序算法有哪些?哪些是稳定的?
  5. 项目吹牛

趣医网校招二面

  1. SQL语句(笔试题)
  2. 对jQuery熟悉么?
  3. 介绍一下Node
  4. 项目吹牛
  5. 未来个人职业发展
  6. 优秀的前端页面是怎样的?

趣医的面试很仓促,每一面的时间都很短,而且技术不够深入。面试官的态度都非常nice,但从技术角度看不是特别好。一面面试官非专业前端,二面主管对前端应该也不是足够了解。笔试时做的题会和简历一起送到面试官前,所以被问了好几次我没写的那道SQL题,确实不会。。不会直接大方的说就好了,没有关系的。

京东校招一面

  1. 现场看项目提问细节 Canvas如何实现雷达图。
  2. 项目吹牛
  3. display有哪些属性值?
  4. 什么是inline-block,inline-block的间隙问题。
  5. 行内元素float:left后是否变为块级元素?
  6. 如果想隐藏页面中的一段文字,有哪些方法可以实现?
  7. Z-index可以设置为负数么?设为负数有什么用?
  8. 调出了笔试时中的一道算法题,讲解思路。
  9. 实现一个效果,当鼠标移动,在移动的路径上有从小到大变化后消失的心形动画。简述实现的思路。
  10. 了解SVG么?Canvas和SVG有什么区别?
  11. Cookies有什么用?
  12. 了解CSS预处理么?

京东校招二面

  1. 项目吹牛
  2. DOCTYPE声明的作用
  3. 页面导入样式时,使用link和@import有什么区别?
  4. 指定img标签的宽高有什么好处?
  5. 关于js类型转换的问题
  6. 什么是闭包?
  7. 什么是JSON?什么是AJAX?什么是JSONP?
  8. 为什么大型应用需要从多个域名请求资源?
  9. 什么样的页面具有良好的用户体验?

京东的一面给了我很大的惊喜,是最棒的一次面试。我还没有坐稳,面试官说我看了你的项目和GitHub,挺好玩的还不错。虽说可能只是安慰我的话,但还是非常的感动,觉得面试官真的很用心。面试开始就打开了我的另一个移动端项目,拿着手机和我探讨技术难点。面试全程感觉是技术交流而非面试,我不清楚的地方给我适当的引导,我觉得需要补充就会大胆说出来。没有太大的压力,却不知不觉的讲了好多。 对于二面有点失望,可能是我的期望有点高了。二面面试官也看了我的项目,并给我提了些改进的建议。可后面直接在电脑打开了一个前端面试题的文档,照着文档抽题提问我。他问一个,我答一个,他再帮我补充回答。虽说都是基础题,但还是有些失落,总觉得二面应该是淡化基础,而是在项目整体和架构上进行讨论。

之后问了他一个问题:前端发展如此之快,在之后的学习中应该紧跟发展并学习新框架和技术么?他说他不反对盲目追求新技术,而是应该在有需要的时候选择使用最适合的框架,更应该注重基础。因此可能这个面试官更看重基础,现在我也能理解他了。但总觉得他应该不是部门的leader,感觉有点年轻,气场有些弱。

经验总结

知识准备

在准备面试的时候首先要打好自己的基础,多看一些书。前端最重要的还是JavaScript,所以首推《js高级程序设计》。不需要太多的书,这一本足够。如果有其他的精力和时间推荐《高性能JavaScript》这本书,里面提到了很多前端的优化和细节,在面试时吹牛总能用上。至于HTML和CSS,多刷刷前端面试题就可以了,一般不会有太难的问题。关于其他设计模式、react、node之类的书,有时间看是最好的,但还是要以基础为主。尤其是一线的互联网公司,更注重你的数据结构、算法、网络基础等知识。

项目准备

项目在面试中也十分的重要,是你和面试官重要的谈资。尽量有一两个高水平的项目或作品,而且要对项目的所有细节都足够的熟悉。提前考虑这样的问题:你的项目中技术难点是什么?遇到了什么问题?你是怎么解决的? 一定要提前准备好这几个问题的答案,到时才不会紧张的说没有难点和问题,面试官主要是在考察你是否有发现问题和解决问题的能力。
对于本科生来说,没有什么课题和项目怎么办?如果你自己有好的想法和创意,试着去实现出来。面试了一些公司,觉得今年大公司似乎都对node.js很感兴趣,如果你有nodejs的项目也是非常不错的。但尽量要有前端相关的项目,不要把什么无关痛痒的项目都写在你的简历上。

其他准备

至于其他的加分项有很多,你也可以提前准备。例如个人技术博客、GitHub、参与了某些大型的开源项目、活跃于某些技术论坛或社区都是你的加分项。要提前对面试公司有一定的了解,例如看看该公司前端团队的项目和文章,公司的主页、新产品、新动态等。F12看看公司主页用了哪些框架或者类库,比如趣医网官网用的就是Angular,面试时就问了我对Angular是否熟悉。

面试中的经验

面试时要有一定的眼色,遇到比较年轻阳光的面试官可以油一点,试着掌控面试的节奏,尽量不要陷入你问我答的模式。在回答问题时,可以向你熟悉的方向进行深度和广度的扩展。切勿不懂装懂,挖坑自己跳。面试官非常喜欢根据你的回答来继续追问你,所以一定要组织好语言再回答。 遇到严肃和较年长的面试官,通常会给你较大的压力,你基本没有什么发挥的空间。这时候就只要沉着冷静的接受一波波的问题就好,完全是考察你的技术基础和能力了。 态度一定要友善,不管面试官怎样对你,记得保持微笑和积极的心态。可以对面试官提出建议和疑问,但不要质疑面试官和钻牛角尖。不需要特别的谦卑,应该做到自然大方,要记住你们是在做技术交流而不是在考试,回答问题时应直视面试官。 如果面试官在面试最后问你是否有其他的问题要问时,你最好能提出一个有意义的问题,而不是回答没有了。切忌不要问工资什么的,会显得你非常的蠢。。可以问问面试官所在的部门和部门职责,进入公司后的培训计划和任务安排,公司前端的技术栈,未来前端发展的方向,对于自己的评价和建议等等。

我并没有写HR面的经验,但HR面也蛮重要的。常见的问题也就是:家庭情况,家人的期望,工作地点,加班,薪酬,职业发展,有没有男女朋友等常规问题。该诚实的时候诚实,不该说的别说。尤其是加班和工作地点,回答要谨慎。

写在最后

根据前端摩尔定律,每十八个月,前端的难度翻一番。层出不穷的框架和技术,不一定要做走在最前面的人,但绝不能掉队。首先要掌握扎实的基础,但不要就此满足。试着了解其他技术,比如HTML5、CSS3、React、Node等,通过面试感觉对ES6的考察不多,但也应该注意这方面的学习,还包括HTTP2。除这些之外,如果你还懂NPM、WebPack、测试、扎实的后端基础、数据库等知识那自然是更好的。

坚持原创技术分享,您的支持将鼓励我继续创作!