原文地址在我的博客, 转载请注明出处,谢谢!
从大二下学期放暑假开始(7.14)到8月初,我一直在寻找一份实习,锻炼一下自己,看看学的怎么样。这期间,我相继面试了小米、途牛、滴滴和百度,都拿了实习offer。其中百度拿了两次实习offer,但由于我自身一些原因,都爽约了。(在这里给百度真诚地道个歉,我非常珍视这两次机会,但无奈遇到了不可抗拒的原因,今后有机会还会再投的(˶‾᷄ ⁻̫ ‾᷅˵))最后选择了在滴滴实习,很难得的经历。实习期间一直没空闲下来分享一下,结果拖到了现在...那么这篇文章就来分享一下我的面试和实习心得吧
面试
有一些记不清了,毕竟时间太久了...
小米
- 说一下你的前端学习经历
- css左右边固定宽,中间自适应,有几种方案
- css3动画,transition属性知多少
- 说说你是如何配置你项目里的webpack
- 如何判断变量是true or false
- 数组去重,要求时间复杂度为O(n)
- http状态码,304什么情况
- 跨域方法
- 其他想不起来了...
途牛
- typeof 都返回哪些类型 typeof null 返回什么,为什么?
- cookie和session有什么区别
- 有没有实际写过、解决过跨域相关问题
- 使用过ES6/7哪些特性
- 说说 promise 几个常用API和原理
- React的特性,接着问原理,接着问好在哪里
- 堆和栈的区别
- 其他想不起来了...
滴滴
- React技术栈做项目用到了哪些东西
- React特性、virtual dom、diff 、合成事件、调和等原理
- 为啥要给列表类组件设个key?
- 读过React源码吗?
- 使用过哪些状态管理库,我说Redux,接着问Redux 是如何管理React 的,你又是如何使用Redux架构你的项目的
- Redux 有哪些优缺点
- 了解数据可视化吗?做过之类的东西没有?
- 了解node吗
- 其他记不起来了...总之都是围绕React技术栈来问的,上来就问框架很显然想让你进来直接干活:)
百度(地图事业部)
- 你在滴滴实习,为啥要来百度?(blablabla...夸了百度一番)
- 你在滴滴做什么东西?用了什么东西(数据可视化,还用了你们的echarts呢(/ω\))
- 那你知道echarts有哪些可以优化的地方?读过它的源码吗?
- React 特性、原理,React 突出的思想
- 你是如何使用Redux架构技术栈的
- 我看你用了Redux-saga,它比thunk、promise有啥好处?
- 你使用过哪些ES6 新特性、promise原理
- 跨域的几种方法
- 你这个项目有没有遇到什么你觉得难的问题,你怎么解决的?
- 你有啥想问我的?(一般问部门技术栈、工作氛围)
- 其他记不起来了...
百度(校园品牌部)
- 介绍一下前端经历
- 你平常如何用css管理页面布局的,我说栅格,又问栅格怎么实现的
- css3动画、transition、transform,canvas、svg
- sass跟less的区别?
- javascript 有哪些特性,我说了弱类型、单线程、事件驱动,就有了下面的
- 你怎么理解事件驱动机制的?
- 用过事件委托吗?怎么用的?
- 嗯...ES6 用过哪些新特性?我提到了箭头函数,于是就问
- 箭头函数跟ES5匿名函数有什么区别?我提到了this指向,然后就接着问
- 箭头函数自动绑定this原理是什么?
- 嗯...你这个项目怎么配置webpack的?用过gulp吗?webpack跟gulp有啥区别?
- React 突出的特性
- 怎么用git建立一个远程分支
- Linux命令知多少?
- 怎么把一个链表倒序?
- 其他记不清了....
总结
总的来说,由于面试的特殊时期,面试难度会比春招实习、校招要低很多。
面试会围绕你的简历来问,所以简历写好并且为简历做好准备很重要。
面试大多问的是基础,而且问的很细,经常围绕一个点来深挖,还会问一些经常用到的API,所以面试一定要准备,把一些零碎的知识温习一下,基础很重要。项目问的比较少,但项目决定你简历的质量。
前端要掌握的知识面比较广,但是有一些是构建工程所必须的,最好先培养自己比较全面的基础技术栈,可以足够形成构建一般工程项目的基本能力,然后再深挖。
照目前情况来看,深入理解一门框架是很有必要的,但也没必要多。
前端面试算法问题问的较少(大公司问的较多),但别告诉我你不知道查找、排序、去重、遍历二叉树...
面试一定要保持平和心态,抱着我已经拿到BAT offer的心态,不紧不慢的交谈,用眼神、肢体语言帮助嘴巴说话;择机展示思考的过程,全程展示对这行的热情。
祝愿大家都能找到心仪的实习、工作。
实习
我在滴滴实习了一个多月就走了,原因是学校课太多,导员不让出去,我也意识到了现在还是以学业为重...
实习期间,我参与了两个项目,一个是一个滴滴实时计算平台,另一个是 Druid 管理平台。
实时计算平台,面向滴滴内部工程师,是一个依靠滴滴海量数据完成实时计算、任务调度、自动报警监控等等,项目很大,做了一年了,业界少有吧....我所做的是将我负责的部分数据可视化及国际化;
Druid 管理平台,仍面向内部工程师,是一个可视化数据库管理平台,前端由我和另一位实习生负责。我做的是一期核心模块的开发。
最大的体会就是
- 要对产品有极致追求,不能容忍错误,不能容忍繁琐的操作,还要兼顾所有可能的操作
- 体会到了海量数据下的性能的重要性,开始关注性能优化
- 要抱着后台什么数据都有可能产生的考虑,来写健壮的程序,类型检查、空值检测、try catch是必要的
- 做好渐进增强、功能解耦、组件分离很能体现一个人的编程能力和水平,最忌讳代码粘一块、写死,坑的都是自己,,,
- 调试很重要,要有写debugger的习惯
- 时刻准备迎接新技术,哪怕从未听说,只要项目需要,就得立刻上手(我所在的组还是很喜欢用新技术的,只要它好用,License符合)
- 前后端分离的接口文档遵循规范能少说很多废话
- 项目管理,敏捷开发是很好的方式
- 我所在的组开发项目的流程一般是:老大不知道从哪弄来一个需求(可能上级安排的,很多是自己想的…),然后全员开会说需求、定任务,各成员写排期,后端定具体需求、接口,前端配合后端一同开始,每周报告任务进展...
- 对前端er来说,改需求不用那么在意,我们最终的目的都是让这个产品更好不是吗?
- 实习生很少会接触to C产品,做的大多是面向内部人员,因为出bug好商量嘛...
- 我所在的部门女工程师还是挺多的,这个的确让我很惊讶(No Offense)...
- 想到再补充(/ω\)
这次实习,确实比自学效率高多了,而且最重要的是,开阔了眼界,了解了这行业前沿是个什么情况,大公司又是如何部署前端技术栈开发项目的,以及我自身的不足。我也很幸运,找到了自己感兴趣的方向。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。