2017的暑期实习面试到现在差不多都结束了,算下来自己也投了十几家简历,经历的差不多十场笔试,现场和电话面试也差不多有五六家公司。虽然最后只拿到两个offer,所幸是自己期待的公司,下面从试题开始总结一下找实习这段时间的收获和给大家的一点建议,希望有所帮助。
面试结果
题主一共面试了五家公司,最后是拿到了去哪儿网
和腾讯
的offer,参与现场面试和电话面试的公司里,CVTE
和阿里
挂在了HR面
,今日头条
挂在一面
。下面我按照面试的顺序,主要说说这几家公司的面试经历和收获。
阿里(非内推,散招,阿里云)
阿里云的面试是散招,没有通过官网的渠道,当时应该还是2月份,刚开学没几天,寒假忙着做一个小项目,也没有系统的复习,加上是我的第一次面试,答的非常糟糕,一面就挂了。
主要问题如下:
1:如何选择前端这个方向
2:Vue双向数据绑定的实现
3:react和vue有哪些不同 说说你对这两个框架的看法
4:let和const的区别
5:const类型的数组可以向其再push一个元素吗
6:平时用了es6的哪些特性,体验如何
7:浏览器原生支持module吗,如果支持,会带来哪些便利
8:介绍一下你对webpack的理解,和gulp有什么不同
9:webpack打包速度慢,你觉得可能的原因是什么,该如何解决
10:http响应中content-type包含哪些内容
11:浏览器缓存有哪些,通常缓存有哪几种方式
12:如何取出一个数组里的图片并按顺序显示出来
13:平时是怎么学新技术的
14:Node,Koa用的怎么样
15:使用模块化加载时,模块加载的顺序是怎样的,如果不知道,根据已有的知识,你觉得顺序应该是怎么样的
阿里(内推,蚂蚁金服)
阿里一面
面试官在上午打来电话,当时由于还有课并且有了上次失败的经历有点紧张,就直接推到了下午四点钟。
1: 为什么选择前端这个方向,说一下自己的学习历程
2: 介绍一下闭包和闭包常用场景
3: 为什么会出现闭包这种东西,解决了什么问题
4: 介绍一下你所了解的作用域链,作用域链的尽头是什么,为什么
5: 一个Ajax建立的过程是怎样的,主要用到哪些状态码
6: 说说你还知道的其他状态码,状态码的存在解决了什么问题
7: 知道语义化吗?说说你理解的语义化,如果是你,平时会怎么做来保证语义化
8: 说说content-box和border-box,为什么看起来content-box更合理,但是还是经常使用border-box
9: 介绍一下你知道的浏览器缓存,分哪几种,通过什么方式实现,各有什么优缺点,有那些坑要注意
10: 愿意来杭州实习吗
这次面试,没有问框架、工具相关的问题,非常基础,面试官的问题基本上都回答上来了,当场就给我过了,还加了微信,留了电话。感觉很好,似乎又有了一点自信。
当时从这次面试的题目可以发现,虽然阿里的面试官问的都是很基础的问题,平时做做功课都可以回答上来,但是面试官问到了很多为什么有这个东西,这个东西解决了什么问题,如果是你,你会怎么做这种需要自己去总结和思考的问题,如果单纯的记忆知识点是很难回答好的。而且这些问题没有统一标准的答案,每个面试者都可以有自己的见解,需要大家在平时的学习中多总结、多思考才能有比较好的回答。
阿里二面
阿里二面在一面结束9天才来到,一度以为自己挂了,最后微信上敲了一下一面面试官,差不多一个小时后二面电话就过来了,我记得是周五的晚上9:30。
1: 自我介绍,我提到了对数据可视化很感兴趣
2: 说说你对数据可视化的理解,和普通的WEB开发有什么不同
3: 知道常用的数据结构有哪些(因为提到了没有学数据结构与算法这门课)
4: 数据可视化的常用工具有哪些
5: 数据分析和数据挖掘的常用方法有哪些
6: 如果给你一个四维一亿条数据,如何找出其中关联性比较大的几条数据
7: 如果让你设计一个展示人际关系网的可视化界面,你会怎么设计,依据是什么
8: 如果让你设计一个展示某个地区包裹存留数量的可视化界面,你会怎么设计,依据是什么
9: 如果要表示密集性,你觉得可以通过哪些方式来表示
10: 如果要表示层次性,你觉得可以通过哪些方式来表示
这次面试问的我一头雾水,基本没有前端方面的基础知识,最后一面面试官和我说是考察一下潜力和思想的开放性、延伸性。感觉答得不太好,不过最后还是过了。
阿里三面
三面不知道是不是交叉面,不过这次面试面试官说他是北京的(之前都是杭州)。
1: 自我介绍,又提到了数据可视化(蠢哭)
2: 介绍一下你的学习历程和学习方法
3: 介绍一下你的项目
4: 你是怎么协调团队项目的,你觉得要注意哪些问题
5: 你在团队项目中遇到过最大的难题是什么,怎么解决的
6: 介绍一下HTML5的新特性,怎么理解这些新特性
7: 平时关注新技术吗,通过哪些渠道,怎么看待新技术
8: 任意连续的三个正整数相乘,一定能被6整除吗,为什么
9: 对自己未来的规划是怎样的,想去哪里实习
三面感觉还不错,因为没有什么技术问题,也没法很客观的判断答得好不好,但是基本上是说出了自己的想法和见解。
阿里HR面
HR面的具体问题我就不写了,基本就那么几个问题,大同小异。不过这一面需要注意的问题确实最多的,我后面再写在一起。
反正,最后知道我是被HR挂掉了。
CVTE(校招)
CVTE是现场面试,当时在一家酒店,我很早就过去了,流程还算顺利,两个小时就结束了。
CVTE一面
1: 自我介绍,怎么学习,做了什么东西
2: 介绍一下做过的项目
3: [代码题]在一个UI李有10个li,实现点击对应的li,输出对应的下标
4: 如果不用let应该怎么实现,写一下代码,为什么
5: [代码题]实现三个DIV等分排布在一行(考察border-box)
6: 为DIV设置的背景颜色默认会延伸到哪里
CVTE二面
1: 说说你知道JavaScript的内存回收机制
2: [代码题]给出一个绑定点击事件的innerHTML操作,让我讲讲有什么问题(函数防抖)
3: [编程题]编程实现输出一个数组中第N大的数据
CVTEHR面
和阿里一样,被热情温柔的HR姐姐挂掉了。
今日头条(校招)
1: 介绍一下你的学习历程
2:介绍一下你做的项目
3: 问我Github上的一个轮播图组件是怎么实现的
4:实现两栏布局有哪些方法
5:设置width的flex元素,flex属性值是多少
6:平时用ES6吗?用了哪些特性
7:介绍一下你知道的浏览器的缓存
8:实际开发中,通常用那几个字段配合使用来达到缓存的目的
9:get和post有什么不同,越多越好
10:常见的状态码有哪些,常出现在哪些具体的场景中
11:cookie和session有什么联系和区别
12:[编程题] 判断链表是否有环
13:[编程题] 输出二叉树的最小深度
今日头条应该是我前端知识问的最为详细的一家公司,感觉回答的还不错,但是后面的两道编程题我完全不会,面试官很无奈,最后我只能挂了。也提醒一下各位朋友,其实这是很基础的数据结构问题,只要学过一般你肯定会,可是如果连这些都不会,也没有公司敢要你。
去哪儿网(校招)
去哪儿是现场面试,也是在一家酒店。我一共只有两面,技术一面,HR一面。
去哪儿一面
1: 自我介绍,前端学习历程
2: 介绍一下项目,用了什么技术,承担了什么职责
3: javaScript中的this是什么,有什么用,它的指向是什么
4: 平时用了ES6的哪些特性,和ES5相比有什么不同(上一个问题提到了)
5: 常见的状态码有哪些
6: [代码题]写一个快速排序
7: [场景题]怎么实现从一个DIV左上角到右下角的移动,有哪些方法,都怎么实现
8: 简单介绍一下promise,他解决了什么问题
9: 用Promise实现一个异步队列应该怎么实现
去哪儿HR面
感觉去哪儿网的HR和之前的不太一样,问了很多不一样的问题。
1: 你做过什么项目吗?有什么作用?
2: 让我给他现场演示和解释我做的一个组件
3: 让我分析一下之前做过的一个项目的市场前景和实施的可行性
4: 让我帮他解决一个问题(kindle使用微信推送书籍)
其他的问题都是常规的关于未来规划、家庭、自我发展等常见的问题,最后一个让我帮他解决问题确实让我有点措手不及,幸好自己平时对电子产品比较了解,帮忙解决了。当场就给了我口头offer。
腾讯(校招,MIG)
腾讯由于人数太多了,面试战线拉得比较长,横跨两天,共计三次。
腾讯一面
1: 自我介绍,为什么选这个方向
2: 为什么会走上IT这个方向(看我专业不是计算机相关)
3: 平时是怎么学习的,学过哪些东西
4: 介绍一下你简历上的项目
5: 知道Vue的双向数据绑定是怎么实现的吗,和其他框架有什么不同
6: [代码题]手写一个组合继承
7: [代码题]深拷贝方案有哪些,手写一个深拷贝
8: 判断数组有哪些方法,能够100%准确吗,100%准确的方法是哪个
9: 跨域通信有哪些方案,各有什么不同
10: JSONP的具体实现原理是什么,它是怎么工作的
11: 多页面通信有哪些方案,各有什么不同
12: 平时用了ES6哪些特性,体验如何
13: 用Node干过什么,发布过自己的NPM包吗
14: 用Node实现一个用户上传文件的后台服务应该怎么做
腾讯二面
1: 自我介绍
2: 介绍一下你做的项目
3: 你做的最成功的项目是什么,为什么,你觉得你从中收获了什么
4: 你觉得你做的最成功这个项目对你来说难度大吗,难在哪里
5: 在团队协作中,你是怎么解决团队协调的问题的
6: 你觉得你在团队中最核心的工作是什么,对这个团队有什么不可替代的贡献吗
7: 跨域通信有哪些方案,说说你了解的
8: 现在用的比较多的是什么方案,使用场景有什么差别
9: 为什么要选用Vue这个框架,他有什么特点,与react和angluar有什么不同
10: XSS和CSRF攻击知道吗,是什么原理,怎么检测,怎么防范,有什么区别(这块问了很久)
11: HTMLEncode通常在哪个阶段做,可以被破解吗
12: 对自己未来的规划是怎样的
13: 什么时候可以来实习,可以实习多久
腾讯HR面
腾讯的HR是个小哥哥,这让我很不适应,不过有了前几次的经验,这次没有说错话。
面试中需要注意的一些问题
技术面试
技术面试最重要的当然是技术,但是对于应届生来说更准确的说是基础相关的技术。公司当然希望能够一开始就能够解决复杂问题,一开始就可以当正式员工使用的实习生,但是这只是一个期望,在向这个目标看齐的时候,应该先审视一下自身是否有这样的实力,简单的说就是一定打好基础。
具体到前端的方向就是,最基础的知识要保证到你一定是了解的准确并且全面的。如果面试官,问你块级元素和行内元素有什么区别你都说不清,说不完整,就算你用React
、Vue
等框架做个好几大大型项目也会让面试官对你的印象大打折扣。
对于了解的不清楚,一知半解的知识点,最好的选择是直接说我不会,因为不会会给面试官你只是没有学习这个知识点的印象,而一知半解却会给面试官留下学习知识不系统、不深入、缺乏自己的思考这些全局性的坏印象。当然如果你不会的知识点如果太多了,那说明你离面试官要求的水准还差很多,还是回去好好复习比较好。
同时对于自己熟悉的知识点,要学会延伸和比较,比如去哪儿网的那道题,this
的问题,知道this
的作用,this
的指向当然很好,但是如果你还知道this
在ES5及之前
以及ES6/ES7
中有什么不同,为什么要做出这样的改变,解决了哪些棘手的问题相信会更好。
还有需要补充的一点就是,对于前端来说,数据结构和算法同样重要。没有被问到只是运气好,在以后业务逻辑和代码变复杂之后,如果没有良好的数据结构和算法基础,应对起来会非常吃力。
这里推荐一下自己的数据结构和算法的学习笔记:
前端数据结构和算法:github.com/ovenzeze/
HR面试
对于HR
来说,她关注的点和技术面试官是有很大不同的,技术面试官更关注你技术水平能否为这家公司创造对应的价值。而HR
更关注的是,这个人是否能够为这家公司持续效力,简单的说就是HR
最关注你工作后会不会跳槽。当然也会关注你是不是能够匹配当前的工作,但是相对于你工作的稳定性来说这些都是次要的,如果你人都走了,水平再高,也没有任何意义。所以HR
面试的时候,雷区就是意向工作城市和公司或者部门所能提供的城市不匹配,或者有一定会影响到你工作城市的因素(比如女朋友)。当然如果对城市有100%
的要求,提前和HR
沟通好当然是最好的,但是如果没有一定要去的城市就不要过多的表达想去某个特定城市的意愿。
最后希望大家都能找到好的实习。