前端的校招总结,结束秋招
前言
我的所有互联网在九月的倒数第二周全部结束,然后在九月的最后一周开头收到了唯一的一个offer,另外还有两家公司泡在池子里,被捞的机会也很渺茫,所以直接结束秋招了。本科二本,研究生985通信专业,非科班,由于团队所做项目基本都是软开的,故机缘巧合变成了码农,进校开始做了一年多的Android,发现并没有太大兴趣遂投身前端。当然知道前端需要兴趣驱动,否则与日俱增的新东西很容易让人半途而废
准备
由于自己考虑做前端已经是研二上期了,而当时的Android项目正好遇到校庆展示加上赶进度结题,所以真正开始学习的时候已经快接近期末了,差不多从12月份开始前端学习之路,由于知道自己起步较晚,要想在第二年9月拿到一个还不错的offer还是有很大难度的,所以从12月开始几乎很少给自己放假,每天几乎8点过到教研室,然后学习到晚上10点左右回宿舍,周末回家基本只待一天(劳逸结合嘛),刚好运气不错的是之前的Android项目12月基本就结题了,可以全心全意投入自己的事情中。在开始之前,首先我给自己制定了一些计划,比如大概什么时候需要掌握哪些知识,然后需要做一些什么小项目来练手,这样带着目的学习的话就会比较有动力。最开始学习前端几乎都是从HTML/CSS开始的,我是先在网上看了一个8小时的视频,对这些概念有一个基本了解,然后再去w3school挨着看一遍,js的话看了两本,一本是《JavaScript高级程序设计》用来学习,一本是《JavaScript权威指南》用来参考。由于个人比较看重基础,所以在基础方面花的时间比较多,新框架的话只是在暑假之前看了看vue然后做了一个小项目加深了理解,简单看了一下源码没有做过多的深入了。由于9月有很多笔试,所以在暑假的时候恶补了一下算法,把《剑指offer》大致刷了一遍,这个对后来的笔试面试都是非常有帮助的,不能抱着前端对算法要求不高的心态就不看算法了
实习
个人觉得实习还是要找的,至少今年来说周围实习了的基本都拿到了很不错的offer,当然这只是一个锦上添花的作用,如果像我一样基础都还不扎实的可以考虑先把基础打扎实了等校招
内推
内推是可以提前收获offer的机会,而且不通过的话校招还有第二次机会,所以需要把握住机会,虽然现在内推大多数都不免笔试了,不过还是应该多尝试一下。之前写的内推的面经,内推的公司全部挂完了,也没有很在意,不过我始终把面试当做一次学习的过程,可以通过不断的面试来弥补自己知识点上的漏洞,同时多面试还能够总结一些面试技巧
校招
由于我是土生土长的成都人,所以骨子里第一想法都是留成都,成都之外的公司只投了几个名气比较大的,其余都是成都的(后来发现成都我投的也很少,真是不知道自己哪里来的自信能够找到大厂工作),所以校招基本就投了阿里,腾讯,百度,京东,网易,美团,滴滴,还有凑热闹投的一些公司比如招银网络科技,中国银联。然而这些公司的面试大多都集中在了那么十来天的时间,好几天面试面的午饭都没有办法吃,有些时候可能早上七点过出门晚上九点过才能回学校,
阿里(简历评估挂)
最惨的就是阿里,内推投了忘记做在线编程,然后连面试机会都没有,后来校招笔试的时候在杭州玩,也是水水的做了做然后笔试就挂了,就这样连面经都没有捞到就gg了
腾讯(一面挂)
腾讯的面试邀请是在朋友家喝酒的时候收到的,当时还特别激动,由于室友他们前两天就收到了所以一直以为自己笔试挂了然后还准备到时候直接霸面了。面试的时候看到霸面的人巨多,好像今年霸面技术岗的几乎没有给机会面试,自己运气还是比较好吧。然后一面进去面试官全程冷漠,由于看到我项目时间点都是今年的,所以有点质疑我开发能力之类的,然后我就跟他说研一开始做开发,只是之前做的是Android,然后问了我几个简单的基础题,最后把我挂了,估计还是觉得开发时间太少了吧。
百度(offer)
百度的面试官给我的感觉是非常好的,从内推到校招,他们问了一些问题后有些可能回答不上来,但是他们会给一个引导或者解释。面百度是需要准备一下算法的,因为前端也会被问到算法题,校招的时候更是深有体会,基本上去就先写一两道算法题,不过都是些比较简单的,稍微刷过题的应该都能够写得出来。能够拿到百度的offer让我觉得我的运气实在是很好,一面面试官让手写的那些代码基本上都是之前有准备过的题,然后一面面试官还问了好几道笔试中的题,比如topK问题用什么排序,然后写正则表达式给座机号码前面的区号加上括号,由于笔试是编程题没有做出来,所以下来还专门跟同学讨论了一下怎么做。二面全程就被怼了很多CSS的问题,比如让一个元素不可见有哪些方法,说了几个以后面试官会问还有哪些,后来实在想不起来了然后又在另一个属性上进行深挖,比如position:absolute参考哪个元素定位,然后给了个情况是父元素position:inherit,父父元素position:relative会参考哪个,当时答了个父父,然后面试官问我知道inherit是什么意思吗,我说继承,然后她让我再看看应该参考哪个,然后才反应过来是父元素,后来面试官问了个问题没答上来,然后我说我CSS没有看太多,而且平时都是用的chrome所以兼容性那些也没有怎么遇到(我忘记百度是需要兼顾ie用户的),我说我比较擅长的是原生js,接着又在数组和对象深拷贝这个问题上问了好多问题,就是不断地给情形,问这样改变值以后原来的会不会改变,答了几种场景以后面试官说觉得我基础还是挺好的,当时听到这句话还是有点懵逼的,因为感觉她问的CSS问题都没有答的很满意。最后让我问问题的时候特意问了一下最近百度关于弃用react的问题,她笑了笑可能是没有想到我会问这种问题吧,然后还是详细的讲了一下,二面完回学校以后刚到教研室就接到了HR电话说二面通过的消息。三面是在面完美团一面赶过去的,由于两个酒店中间只有3站地铁,所以还好没有冲突,三面唯一感觉比较好的是面试官给出了一道题,当时考虑了两种情况一种算法复杂度O(n^2)一种是O(nlogn)的,在这个问题上跟面试官讨论了很久,然后面试官说他之前都没有考虑到O(nlogn)的情况,我这算是那天人品爆棚了,这个问题应该给我的通过加了不少分,后来面签的时候问了下HR部门果然是三面面试官捞的我。由于只有这一个offer所以打算直接签三方了。
美团(备胎池)
每一个没有按时开始的公司我的运气都不会太好,美团也不例外,约好的下午三点面试,硬是拖到了三点半才叫我进去,由于五点还有百度三面,考虑了面试时间以后心想如果三点四十还不叫我我就直接去百度了。美团也是个特别重算法的公司,一面进去就让手写一个算法,没有写出来,只是跟面试官说了一下思路,他说是这个思路啊,但是我打死都想不出来代码怎么写,于是估计拿了个很低的评分,二面第二天早上,上来就问昨天有没有写算法,写出来没有,我说没有,然后又出了一道算法,悲剧地又没有写出来,然后问了我还有哪些亮点(面试官估计也很无奈),然后看我简历写了设计模式,于是让写了一个装饰者模式,写出来了,最后还是把我放进三面了,但评分估计还是最低的。三面面试官应该对设计那方面特别看重,所以大多数时间也是问的这些问题,由于我看的比较少,自然而然不理想,接着四面,小哥哥是四川德阳的,跟我吹了半天上海比北京好,说南方人可能更愿意去上海,由于我工作地点填的成都,并且不服从调剂,然后四次面试面试官都会问我成都留不了去北京还是上海,由于没有offer最后还是妥协了说去北京,结果面完HR面被通知进入备胎池(待定状态),由于360也是在备胎池里,所以当时还是没有太大的失望。
京东(二面挂)
京东是我觉得挂的太晚了的一家公司,一面约的9:40,进去的时候是11:30,全程20分钟不到就结束,问了下jQuery和vue应用场景,H5新特性和ES6新特性,就没有太多问题了,然后开始鄙视我没有实习经历,我就跟他说我们实验室研二不放实习,如果可以的话我愿意毕业之前提前到公司实习,他还是一副很不屑的表情,出来很是生气因为没有问什么技术问题,感觉挂定了,结果晚上查状态居然是复试未安排,我觉得真的很莫名其妙,那么短的时间根本没办法考察什么,还过了。二面就没那么好的运气了,虽然问了一些基础知识,面试时间也有30分钟,但是全程感觉面试官有点水,明明我说过的东西他也不会仔细的听,比如居中问题我开始说了不用CSS3的方法,后来又说了下CSS3可以用哪些,他又问那不用CSS3怎么做呢,我吐血明明刚刚才说了。反正京东的面试体验让我觉得京东是面过的公司最不尊重人的一家公司,面试官的水平也比其他公司有一定差距(当然这可能是只有我遇到的问题)京东作为留成都的一个次佳选择(之前还憧憬着腾讯),也是我秋招所有面试中最后结束的一家,当时看到复试未通过还是挺难过的,毕竟在成都待了二十多年现在要开始北漂生活内心还是有那么一丝遗憾,不过还是自己太菜也没办法怨其他的
滴滴(二面挂)
滴滴约的11:30面,结果等到下午1:30才开始面,所以结果显而易见也崩了。投的研发岗-前端方向,一面去手写了两个算法,写出来了,然后让手写了个原型链继承,然后对这个进行优化(第一次遇到,后来憋了半天把借用构造函数用上了,满足面试官的要求)结果前端的东西没怎么问几个那个hr就进来给面试过说时间到了,出来一看都花了一个多小时了,跟着进去二面,同样手写算法,写出来了,给他解释完了,说我代码有问题,我检查了下边界那些都考虑了说没问题吧,他还是说有问题,僵持了一段时间后放弃了,滴滴二面是最无语的了,那个面试官全程逻辑跳跃,一些我知道的知识点点到即止,但是在有些时候我明确告知这个方向我不熟悉,然后说了我了解哪些他还要继续深挖,结果果不其然出来就挂了。
招银网络科技(拒了)
这个公司本来是不打算投的,但是听师兄说今年有成都的岗,还专程为了里面有没有前端岗,据说是有专门做前端的科室,于是还是投了一波,但是一面面试官的体验太差了!进去先让用java手写dijkstra算法,写不出来,开始鄙视我做的东西,说我做的这个轮播图不就是一个一个切换吗,跟他们楼下的一样的,我说是啊淘宝京东不也这样吗,他就说没什么特点,然后好一通鄙视,当时面完出来就很不爽了,又不跟我探讨技术的东西,还要鄙视我,然后面到HR面了问我进去愿不愿意转C++和C#,我说我肯定会先做前端的,后台的话要选我会选java,因为之前做Android有点基础再捡起来没那么难,然后HR就问我为什么不想转C++。后来过了几天发了短信让提交资料,考虑了下就算拿了offer也不想去,而且进去还要转岗什么的,所以就没有提交资料了。在没有offer的时候这么做现在想想还是有点固执的。
参考的书籍
《CSS权威指南》
《JavaScript权威指南》
《JavaScript高级程序设计》
《DOM编程艺术》
《jQuery基础教程》
《编程之美》
《剑指offer》
《数据结构与算法》
《HTTP权威指南》
《你不知道的JavaScript》
《ECMAScript6入门》
《深入理解bootstrap》
《JavaScript设计模式与开发实践》
《编写可维护的JavaScript》
《web性能权威指南》
需要说明一下上面的书有一些是我细看并且反复看过好几遍的,比如《JavaScript高级程序设计》、《你不知道的JavaScript》,有一些是浏览了一下然后当参考书用的,比如《JavaScript权威指南》、《HTTP权威指南》,当然学习的东西不光靠这些书,还有很多技术需要通过官方文档来学习的,就没有写了。
总结
找工作是一个实力+运气共同作用的过程,关于这一点,教研室师兄曾经发过一个帖子,我觉得说的很好所以一直收藏着,虽然我秋招结束了也只拿到了一个offer而且还不在成都,不过能够去一个大厂工作自己还是蛮幸运的,当然在前端的学习上也是才入门而已,以后的路还需要更加努力了。最后祝大家双节愉快,早日收获满意的offer
面试中的问题
百度校招一面
- ajax流程讲一下
- 了解promise吗,简单说一下
- 手写一个箭头函数如何使用
- 实现一个链式调用
- 写个简单的观察者模式
- 数组去重
- let和const有什么区别
- 如何判断数据类型,如果遇到null呢
- 写一个正则,要求匹配电话号区号+座机号,并且给区号添加上括号
- mvc,mvp和mvvm的区别
- 笔试题topK用什么排序?(答了堆排序)堆排序时间复杂度,稳定性以及什么是稳定排序
- 对于一个基本有序数组用什么排序比较好?(答了冒泡)冒泡时间复杂度是多少,最好的情况是多少
- 有什么问题问我
百度校招二面
- 手写一个代码,实现输入[a,a,a,b,b,c,a,a]输出[3,0,0,2,0,1,2,0]
- 实现三栏布局,中间200px,两边自适应
- position有哪些值,定位参考哪一个元素
- 让一个元素不可见的方法有哪些
- 数组深拷贝,浅拷贝,对象深拷贝,浅拷贝
- webpack路由懒加载
- es6中异步请求多个数据如何操作
- 现在有哪些公司offer
- 有什么问题问我
百度校招三面
- 不同高度的楼靠在一起,宽度相同现在要挂一个广告横幅,不可以超过楼的高度,要让广告横幅面积最大应该怎么挂,复杂度是多少
- 三个箱子装有apple,orange,apple && orange,标签都是错误的,需要拿几次才能判断箱子里装的是什么
- let和const的区别
- 对象的解构赋值
- 函数的rest参数
- SPA优缺点
- mvc和mvvm的区别,mvvm是为了解决什么
- 箭头函数的作用
- xss和csrf如何防范
- es5和es6有什么区别
- 问项目,问简历
- 项目中有遇到什么难点吗
- 现在有什么offer
- 对全栈怎么看
腾讯一面
- spa原理,为什么url改变不会刷新页面
- localStorage大小
- 写个继承,es6继承是如何做到的
- vue数据绑定
- 如何学习前端
- es6和es7了解哪些
- h5了解哪些
- 正则匹配一个网址
- css3了解哪些
美团校招一面
- vue源码数据绑定以及diff算法
- vue中计算属性如何根据data里的值发生改变
- vdom有什么缺点
- webpack用过哪些loader
- 看github,看个人网站,问了个angular脏检查是什么
- exports看代码说输出结果(面试官给我说babel转码的exports和node里的不太一样,没听明白以后有机会试试)
- let和const的区别
- 箭头函数怎么用
- localStorage有什么不好的
- 手写算法,求二叉树中两个标记节点之间的最短路径
美团校招二面
- 无序数组找出所有满足条件的数,这个数比前面的数都大,比后面的数都小
- js写继承,原型链继承有什么不好的地方
- 手写个简单的mvvm
- 手写装饰者模式
- 看过哪些书,写一下
- 讲一下this绑定
- http讲一下,缓存策略,etag了解吗
美团校招三面
- prototype属性怎么用
- 对跨域安全有什么了解,如何防范
- 看过哪些设计方面的书
- 对UI有什么了解
- css看过哪些书
- 觉得前端有什么不好的
- 知道哪些复杂的设计模式,应用场景是什么
- 项目中有什么亮点
- 对mvc有什么理解
京东一面
- jQuery和vue有哪些区别,分别使用场景
- 为什么选择vue
- h5新特性
- 跨域有哪些方法
- es6新特性
- 你做前端有什么优势
京东二面
- vuex原理
- 项目难点
- 水平垂直居中
- 盒模型
- 数组去重
- 将一个一维数组变为二维数组
- HTTP状态码知道哪些,他们如何分类的
- 平时如何学习新知识
- 继承是如何实现的
- 怎么看待前端猛增的框架
滴滴一面
- 手写两个算法
- 手写原型链继承
- 对原型链继承进行优化
- 画一下盒模型
滴滴二面
- HTML标签中常用的类名
- 写个原型链继承,如何优化
- 画一下盒模型
- JSONP的底层实现
- ajax同步和异步的区别
- window.onload何时执行,浏览器如何渲染
- 轮播图如何实现
- linux用过哪些命令,写过哪些shell
- 手写数组归并去重