2015年实习生面试小记

不打算考研的大三狗这个暑假要么实习,要么等9月份的秋招,搞技术的一般暑假实习的比较多,寒假在家的时候接了一个同学的电话,提醒说要开始准备面试了,我才有些紧迫感,寒假在家也就懒散的学了一点儿,主要就是写学校一个实验室预约系统的后台的REST APIs,然后就等着去学校准备了,话说假期赖在家里还是挺懒的

2月28号晚上到合肥的,到学校休整了一天就上课了,当然,上课这事和我关系不大。QQ群里的同学说写个简历给学长学姐内推,然后就赶紧在他们的帮助下迅速水好了一份简历,然后就逛逛微博,看到@玉伯发的微博说支付宝有招聘,哦,我所了解的玉伯应该是国内前端大牛,在他的微博下随便评论了一下,也不指望他能回复我,事实上的确没有回复我,但是,另一个人回复了我,看了资料好像是淘宝的工程师,具体情况就不清楚了,他说他可以帮我内推支付宝,他要了我的姓名手机号码和邮箱,当时我还是有一丝怀疑的,所以我就让他别急着内推,让我再考虑考虑,因为我们那个社团(下文就叫它中心吧)里有在阿里巴巴实习的学长某栋和学姐@奉雨,学长在手机淘宝,学姐好像在淘宝UED,他(她)两都可以内推的,问题来了,我到底让谁内推?考虑了一下后决定让学姐内推,但是她内推的时候我被拒绝了,因为我可能已经被内推了,再内推是不行的,然后我就想到了可能是那个淘宝工程师内推了我,后来想想也差不多,支付宝那边还有玉伯呢!虽然各个部门都有大牛

说了一些题外话,接下来说说面试经历吧

3月5号收到内推的通知,6号中午就接到了来自杭州的电话(0571-2688888),这号码按照国人的看法,应该是非常吉利的号码啊,当然我们打过去是接不通的,当时我刚刚上床准备午休,电话面试的面试官就说有没有时间面试,我说我刚刚午休没有时间,他又问什么时候有空呢,我说下午两三点吧,然后他就说好的,下午两三点保持电话畅通,再然后我就忐忑的睡了。下午打开电脑看看面试题的时候,没一会儿他的电话就来了,还挺准时。第一次电话面试就这么开始了

开始还是老套路,他先自我介绍一下,说是蚂蚁金服的前端工程师,今天要给我面试,然后还是老套路——轮到我自我介绍了,我也不擅长说话,简单介绍一下就完事了,接下来感觉他在对着简历问我,先问项目经验,我说了去年暑期实习的经历,写了类似新浪微博输入框的@功能和一个英语学习APP的后台管理网站,同时也学习使用了Bootstrap,在中心也做一些网站的前端开发,以及自己的创新项目失物招领网站。我就详细说了一些

  • 关于类似新浪微博输入框的@功能
    在输入框textarea下面放置一个有contenteditable=”true”属性的divtextareadiv的大小和位置一模一样,然后把textarea的字符同步复制到div里去,检测光标前的字符是否是”@”,如果是,把div里的”@”用span包起来,然后用getBoundingClientRect()来获取span的位置,也就是”@”的位置,然后就是常规的处理,主要还是怎样获取”@”的位置,详细的可以看我这篇博客的介绍新浪微博发布输入框-功能,这个Demo在Github上竟然有人star了
    竟然有人star了

  • 英语学习APP的后台管理网站
    这个项目后台是用Python的框架Django写的,提供REST APIs,前端20美刀买的模板,样式是Bootstrap,前端用AngularJS来开发,我几乎是边学边写,这种写法完全不同于传统的写法,跟面试官简单说了一下我对AngularJS的了解

  • 中心网站开发
    大三一开始学子咨询网的开发,前端全部推倒重新写,主要难点还是JQuery的动画和Ajax数据的解析以及前后端搭配,还有一些移动端的网站,可我都是用PC端的写法写的

  • 失物招领网站千寻网
    这个算是自己学院的创新项目,主要难点还是瀑布流的效果,以及较多表单的处理,用正则过滤用户的输入,他问了一个关于注册的验证码问题,为了防止机器攻击,一般的登陆注册都要有验证码,我回答说,这个流程就是后端生成随机字符串的图片发送到前端,前端获取输入的验证码发送到后端进行匹配,若成功则表示验证码输入正确,否则输入失败,我觉得就这么简单啊,但是他问了如果由于某些网络原因导致验证延迟,然后极快速的点击提交该怎么办?当时我愣了一下,也没考虑到这个问题,我回答到在用户点击提交的时候还有一次验证,这个问题就这么稀里糊涂的pass了

  • 前端优化
    这个是老生常谈的问题了,方法一搜一大把。回答了一些常用的方法:样式表放在head标签内,脚本放在body闭标签前,图片预加载,懒加载,选择合适的图片压缩格式,CSS Sprite,代码压缩,优化JS中性能开销较大操作(for循环、DOM操作之类的),合并代码,使用CDN等,其中有些原理都是减少HTTP请求。面试官详细问了是怎么使用CSS Sprite的,大概原理就是把许多小的png图片整合到一张大的png图里,文件总大小还是一样,但之前有多少张图片就得请求多少次,而现在只要请求一次,使用的时候得用到CSS的background-position属性,这个图像合并和样式表和脚本合并都是为了减少HTTP请求来提升速度,面试官又问我怎么合并图片的,我是找了一个在线工具,把许多图片打包上传,填写相关参数之后就可以合并了,最后把大图下载下来就可以使用了,面试官还问了,如果再添加一张小图上去应该怎么办?没遇到这种问题啊,又懵了,机智的回答把小图添加到之前的小图里去,再打包生成?还是和大图打包再生成?算了,这个问题Pass吧

这次面试好像还问了一些前端知识,可是我完全不记得了,还记得他最后要我问他一些问题,我大概问了他们整个项目的开发流程,对于类似AngularJS这样的框架的态度,还有前后端分离以及公司内部的技术培训交流,面试官回答的挺不错,听声音像一个25-30岁的码农,不对,是前端工程师,最后愉快的说了拜拜,还有感谢我参加面试!哈哈

一面16分钟就结束了,速度超快,听别人说都是40分钟到一个小时的面试,然后去实习生招聘网站看状态,等了大约10分钟,看到了已回绝,当时震惊了,因为感觉面的还不错啊,怎么就挂了,再仔细看看网站,然后发现自己看错了,因为之前提交了一次职位申请,这次是内推面试,所以自动把我申请的那个给拒绝了,然后内推的那个显示一面通过。

3月11号下午二面开始,当时刚刚睡醒,脸还没洗,短暂犹豫了一下,是推脱一会准备一下呢还是直接面?机智的选择了直接面吧,躲也躲不掉。面试开头还是和一面一样的,面试官的自我介绍,然后轮到我了,粗枝大叶的自我介绍完了

  • 怎么接触前端的?平时是怎么学习的?
    大一的时候遇到个学长,有点兴趣然后就走上了不归路…………,学习方法有看书,百度云里有许多相关学习视频,某宝也有的卖,不懂的问Google问百度问Stackoverflow,再不行问前辈,还有通过做项目来涨经验,项目经验绝壁的重要。面试官还问我看过哪些书,《JavaScript权威指南》犀牛书,前端必备的工具书,《JavaScript高级程序设计》,好书看了一遍感觉还得看几遍,《JavaScript启示录》,《JavaScript经典实例》,《高性能JavaScript》,这些书并没有看完,部分大致的读完

  • CSS3动画
    我没有听清楚这个问题,我只听到了动画这个关键字,这个小Case啦,先JS获取这个元素,再添加事件,再在函数里写 动画的语句,主要是用到定时器,信心满满的等面试官的回话,他说不是这个,是用CSS3来实现动画,顿了一会儿模凌两可说animation,然后用transformtransition搞搞,我只是有点印象,还好面试官说知道就行了,当时我就在想,这面试官很适合我啊,心中一阵窃喜飘过,哈哈!

  • JavaScript连接字符串的几种方法
    这个问题,还是有+这个操作符更常用的来连接字符串吗?有些书上又说,使用+=的性能会更好,还记得有个字符串方法可以连接字符串,只是记得,具体不知道是啥,事后查了一下是concat(),该方法用于连接两个或多个字符串

  • 盒子模型
    盒子模型从内到外分别是contentpaddingbordermargin,万恶的IE的content包含了paddingborder,说到这个必须要说CSS的兼容性,其实兼容IE6我是打死都要拒绝的,所以,只要你的CSS中没有使用太多的横向padding值,网页也不会发生严重的错位。当然,前提是你的其他CSS写法是符合标准的。这个问题我也是瞎蒙

  • CSS Hack写法
    因为IE的盒子模型不按标准来,So,用CSS Hack来让它“标准”起来,原理就是针对不同的IE浏览器写只有它们各自能识别的代码

    1
    2
    3
    4
    5
    6
    .hack{
    color:gray; /* FF,OP支持 */
    color:pink\9; /* IE678支持,但是后面的IE67会覆盖该条样式,所以这种顺序的写法使得该条样式只用于IE8*/
    *color:red; /* IE7支持 */
    _color:blue; /* IE6支持 */
    }

注意代码的先后顺序!

1
2
3
<div id="outer">
<p id="inner">Click me!</p>
</div>

上面的代码当中一个div元素当中有一个p子元素,如果两个元素都有一个click的处理函数,那么我们怎么才能知道哪一个函数会首先被触发呢

  • 事件冒泡
    当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发,这一过程被称为事件冒泡,这个事件从原始元素开始一直冒泡到DOM树的最上层,因此上面的例子在事件冒泡的概念下发生click事件的顺序应该是p -> div -> body -> html -> document

  • 阻止事件冒泡
    在IE和FF浏览器内阻止冒泡行为是不同的。IE中使用cancelBubble,FF中使用stopPropation()

  • 事件捕获
    与事件冒泡相反,事件会从最外层开始发生,直到最具体的元素。上面的例子在事件捕获的概念下发生click事件的顺序应该是document -> html -> body -> div -> p

  • 事件代理

    1
    2
    3
    4
    5
    6
    7
    8
    <ul id="color">
    <li>red</li>
    <li>yellow</li>
    <li>blue</li>
    <li>green</li>
    <li>black</li>
    <li>white</li>
    </ul>

如果点击页面中的li元素,然后输出li当中的颜色字符串,我们通常会用循环给每个li添加点击事件,但是,利用事件代理,像下面这样

1
2
3
4
5
6
7
8
var color_list = document.getElementById('color');
color_list.addEventListener('click', showColor, false);
function showColor(e){
var x = e.target;
if(x.nodeName.toLowerCase() === 'li'){
console.log('The color is ' + x.innerHTML);
}
}

  • 跨域
    在页面上使用Ajax请求访问其他服务器的数据,此时会出现跨域问题。跨域问题是由于JavaScript语言安全限制中的同源策略造成的。简单来说,同源策略是指一段脚本只能读取来自同一来源的窗口和文档的属性,这里的同一来源指的是主机名、协议和端口号的组合。解决跨域大多使用JSONP(JSON with Padding),原理是script标签是可以跨域访问服务器上的数据的,因此,可以指定scriptsrc属性为跨域的url,从而实现跨域访问

  • 原型
    没用过这东西,不过感觉应该是太深奥了所以没用到,面试官问我这个问题,我就说prototype,面试官说只知道,没用过是吧?我自信满满的回答嗯,面试官说行,运气真好啊

二面的面试官大概就问了这些技术相关的问题,总计22分钟,中间他还接了个电话,可能有一些忘记了,面试的最后还是一样,问我有没有什么问题需要问他的,照旧把准备的问题翻出来问了两三个,最后的最后,他问我什么时候能过去实习,我说我暑假就可以,大四的部分时间也可以,然后他竟然问毕业设计怎么办,我就说毕业前回学校搞搞就行了,最后的最后的最后,还是那句感谢你参加我们的面试,拜拜!

5分钟过后官网显示二面通过,极度幸运,其实面试官最后问我什么时候能去实习的时候,我就有底了。二面过了,阿里的技术面应该结束了,继续等吧

3月16号晚上来了一个杭州的电话,估计是面试的,是个女的,声音听着还不错,姑且称为HR姐姐吧,不是坏(H)人(R)姐姐哦!语气很亲切,问一些非技术的问题,问你的习惯,生活爱好,问学(can)习(bu)成(ren)绩(du),问我为什么填了一个中等,其实我在想,申请的时候,有成绩的选项,有5%、10%、30%和中等,我只能填中等啊,如果有50%的话,我还是算不上,哈哈!HR姐姐问为什么?我说自学前端,不喜欢本身的数学专业,然后我来了一句你懂得,她也会意的笑了,HR应该不会刷人,so,这轮面试也过了,共计6分50秒,然后官网显示三面通过,四面通过,怎么多出来一轮面试了?

3月19号就收到了面试通过的通知,阿里的面试很幸运很幸运的通过了,说实话还有些心虚,第一次正式的面试就OK了,真的很幸运!

腾讯的实习生也申请了,参加了在线笔试,题目涉及网络通信数据结构、数据库、算法、排序、OC、iOS、Python、Java、JavaScript、C/C++等,几乎是白卷的交了,我就不吐槽这个在线笔试题了,当时也没抱什么希望。

4月14日竟然收到去面试的通知,在合肥市政府旁边的那个福朋酒店,四星的,周围环境真不错。在酒店三楼的大厅等待面试的卡片,拿到卡片就可以去对应的房间面试。等了一会儿就接到卡片到16楼的某个房间去面试,是个男的,说话生硬挺柔,也挺亲切,桌上写了一张纸,第一个问题,面试的实习岗位,当然是Web前端开发了,第二个是自我介绍,照旧,第三个项目经验,还是照旧,第四个,技术问题:

  • Cookie
    哈哈!又是我不明白的问题,笑着笑着就哭了,腾讯的面试比较难我算是见识了,问的都是我不常用的东西,Cookie可以在客户端存储数据,可以实现记住账号密码,购物车和换肤之类的功能。浏览器存储Cookie的大小和条数是有区别的,总的来说应该尽量保证Cookie的数量以及相应的大小。Cookie个数最好不超过20~30个,大小最好小于4K,被问倒了。问题还没完,Cookie还有domain,它用来表示Cookie所在的域,默认为请求的地址,还有path表示Cookie所在的目录,默认为/,就是根目录。这个真是一点不懂,他用test.qq.com和qq.com和我解释了一会儿,我算是懂了一点儿,被虐

  • 正则表达式
    不会啊,只是偶尔用来过滤表单啊,尼玛完全没系统学过啊!我就“挑衅”的说你问一个看看,他问,怎么用正则检测中文字符串,我就记得检测中文的正则表达式里含有u这个东东,后面跟几个字符,后来查了一下才知道是下面这样的

    1
    var regChinese = new Regex("[\u4e00-\u9fa5]");

只怪自己没好好学习,还瞎显摆,面试官主动跳过这个问题

后面还问我有没有用过CSS样式表,我当时是一愣一愣的,当然用过,还问我CSS选择符,这是什么鬼?不都是叫CSS选择器么?后面还问了事件,其他的和阿里的面的差不多。

最后还是一样的,有什么问题需要问他们的,最后还是感谢参加面试,等待通知。

当晚收到通过,初试过了,明天接着去复试,酱油打着停不下来了。

4月15号,还是那个酒店的,8楼,某房间,女面试官,我看到桌子上有几张草稿纸,纸上写了一些求和符号公式,估计是面试算法的,但是我是来面试前端的。开始还是一样,可是整个面试都没有问倒任何和前端技术相关的问题,净问学习啊,项目啊,学习啊,项目啊,估计她不是前端的,然后复试就挂了,此处应该有暴漫表情,心有不甘。我只能安慰自己,听说腾讯今年不怎么招人?阿Q精神

百度的实习生面试,因为只提交了简历,没有申请岗位,所有别人笔试的时候我才知道我没有申请,也就没有笔试,也就没有了。

后来还去科大参加了蘑菇街的宣讲会,第一次去科大,怎样装作经常去呢?在线等,参加了笔试然后就没有了,估计是学历直接被鄙视了,那个技术的头儿是原淘宝工程师,花名顶天,他们也是在杭州,听说妹子挺多

还有,腾讯(鹅厂)的笔试,有个哥们儿答题的时候言辞激烈,所以没有面试的机会,我们这些几乎白卷的都有机会,最后他霸面了,也是挺佩服他的勇气

打死不面试了,内推相对会容易一些。心态端正不回来了,很幸运很幸运!

5月中旬上海百度打电话说面试,面就面吧,首先就问有没有兴趣搞PHP,懵了,就说没兴趣,本来就几乎不动PHP,还要从零开始学,这不逗我么?然后他就说那行,他跟HR说找个前端来面试我,要我等电话。一两天之后,电话来了,当时我还在上课呢,果断挂了,然后就没有然后了。

吐槽一下,招聘的网站中,阿里做的最好(完全没有偏袒我的雇主),腾讯次之,因为只能看到简历和招聘岗位,百度最烂,还要另外注册登录,然后什么状态也看不到。

Fork me on GitHub