最近公司在做一些战略调整,部门有不少老员工前辈们都陆陆续续的离职或者被离职了。而我所在的团队——网易菠萝,也被归并到游戏运营中心了。因为产品策划还没有出来、暂时没什么需求做,闲得有点 e-g-g 疼的,每天从早到晚都是待在公司看看书、刷刷知乎等。我真是命途多舛啊,还没有真正步入社会,就见证了一个上百人的事业部说没落就没落。甚至已看破红尘,连参加省公务员考试的计划都做好了。这可不是开玩笑的哈,已经在报名费和复习资料上花了两三百块啦,只是因为思想觉悟比较低,始终还是对政治没有兴趣,那几本复习资料到现在还没翻过一页。几天前,一哥们儿说他们公司(CVTE)有个春季校园招聘,叫我可以去试试。这里先补脑一下 CVTE 是个怎么样的公司哈,它在广东这边也算是小有名气的,主要原因是它的薪酬比 BAT 还要高出不少,传说毕业生月薪已经 15K 左右,而且一年还有 16-17 薪。加上它的校招宣传非常给力,广东高校计算机专业的同学应该对它都有耳闻过,其他省份的同学可能就比较陌生,不过外界对这个公司的评价并不怎么好,有兴趣的可以自行到知乎看。因为 CVTE 的薪酬确实很吸引人,所以我也有点儿心动哈。不过当时已经过了笔试时间,而且还不能霸面。幸好我那哥们儿和 HR 姐姐还算熟,而且我的简历写着有 NAT 实习经历,也就顺利的获得了面试机会。
昨天(2 月 8 号),我还是按照平时的时间 8:00 起床(因为公司 9:30 上班)。一打开手机,就看到了推荐我去 CVTE 的哥们儿在微信发了好多条信息,他说已经和 HR 说好了,让我 8:30 之前赶到黄村地铁站坐 CVTE 面试班车过去面试。我的天呐,我本来只是开玩笑啊,想不到这哥们儿是认真的。毕竟他也是好不容易才帮我争取到了面试机会,放他飞机可不太好啊啊。所以,七手八脚的穿上衣服、鞋子,没来得及刷牙洗脸就骑上 ofo 直奔地铁站去了。这几天的广州下着冷冷的春雨,早 / 上的气温也就 10 度左右。我当时只穿件衬衣,真是冷得发抖啊。
还好,8:25 就到了黄村地铁站,然后从 C 出口一出去就看到了白色的 CVTE 班车。当时车上已经有 10 来个人。但是,后来因为要等一个睡过头的家伙,到了 8:50 老司机才开车。CVTE 给我的感觉是挺人性化的,竟然愿意为了一个迟到的考生等待了 20 分钟。
大概坐了 40 分钟的车程,就到了广州罗岗 CVTE 园区了。一下车,眼前就是金碧辉煌的传说 中的 CVTE 大厦。不知道是因为这里的纬度比学校高、还是因为这里山比较多,反正气温真的比学校要低了好多,我全身都在颤抖。下车大概等待 2 分钟,HR 姐姐就下来带我们到楼上去面试了。等候区和面试区是同一个会议室。当时有 2 位 HR 姐姐、6 位面试官(4 个一面的、2 个是二面的)。刚刚坐下来,HR 姐姐就说先上 4 个同学到前面来面试。我当时第一个上去的。尴尬的事情这时候发生的,面试官哥哥问了我手机尾号 4 位数字,然后他输入了几遍都找不到我资料。于是叫来了 HR 姐姐问是怎么回事,这时候 HR 姐姐才恍然想起来我是没有笔试、直接来面试的,赶紧把我拉到一个角落,叫了另外一个同学上去面试。她问我带简历了没有,我说没有。然后面对面加了微信,并把很久以前做的一份电子简历发给了她。然后就叫我回到座位去等待。
大约过了 30 分钟,HR 姐姐叫我上去第一轮面试。这时候因为太冷,我全身都在发抖啊。面试官好像看到我在发抖,然后就说不用紧张哈、放松点儿。大哥啊,我这是冷啊不是紧张 啊、没有看到我才穿一件衬衫吗。然后,他先让我做了简短的自我介绍。然后就开始进入正题了,下面是当时被问到的一些问题:
你运行一下代码会发现,无论你点击哪个列表,控制台都是输出 10。这是因为 var 声明的变量是函数作用域的,而不是块级作用域的。也就是说,for 循环 10 次,每次都是改变同一个 i,所以它的值会从 0 一直加到 10。还有个问题是闭包导致的,闭包保存的是外部变量的引用,而不是值。也就是说,循环 10 次监听器创建了 10 个闭包,它们里面的 i 引用的是同一个啊。所以全部都指向了 10. 要解决这个问题有两种方法。一种是使用 ES6 的 let 来替代
- <body>
- <ul>
- <li>
- test1
- </li>
- <li>
- test2
- </li>
- <li>
- test3
- </li>
- <li>
- test4
- </li>
- <li>
- test5
- </li>
- <li>
- test6
- </li>
- <li>
- test7
- </li>
- <li>
- test8
- </li>
- <li>
- test9
- </li>
- <li>
- test10
- </li>
- </ul>
- <script>
- var lis = document.querySelectorAll('ul li');
- for (var i = 0,
- len = lis.length; i < len; i++) {
- lis[i].addEventListener('click',
- function() {
- console.log(i);
- },
- false);
- }
- </script>
- </body>
里面的 var, 因为 let 支持块级作用域。改成如下就正常了。
- var i = 0
还有一种方法,就是很多经典书本都提到的,使用立即执行函数来切断闭包对外部变量 i 的引用:
- for (let i = 0, len = lis.length; i < len; i++) {
- lis[i].addEventListener('click',
- function() {
- console.log(i);
- },
- false);
- }
当然啦,如果对闭包不是很熟练,还可以通过事件委托来避开这个陷阱哈,代码如下:
- for (var i = 0,
- len = lis.length; i < len; i++) { (function(i) {
- lis[i].addEventListener('click',
- function() {
- console.log(i);
- },
- false);
- })(i)
- }
使用了事件委托,减少了监听器的绑定(只对列表的父亲元素监听),这种方法说不定还会加分呢。哈哈,我当时就是用这种方法来实现的,面试官可能觉得我的解法有点不寻常、顿时一脸蒙 B,甚至还一度怀疑
- var ul = document.querySelector('ul');
- var lis = document.querySelectorAll('ul li');
- ul.addEventListener('click',
- function(e) {
- var target = e.target;
- if (target.nodeName.toLowerCase() === 'li') {
- console.log([].indexOf.call(lis, target));
- }
- },
- false);
这段代码是不是有问题。直到后来我直接在他的笔记本跑了一遍,他才相信是正确的。
- console.log([].indexOf.call(lis, target))
然后,等待了一个多小时,轮到了二面。面试官大概三十多岁,可能是前端组长或者技术总监之类的职位吧。
他主要是问到了下面的这些问题:
- var user = {
- name: 'tom',
- age: 20,
- gender: 'male'
- }
- var test = document.getElementByid('test') test.onclick = function() {
- test.innerhtml = user.name;
- }
- // ...后面还有很多其他操作,最后把user对象释放掉
- user = null; // 释放对象
至于二面的问题都不是很难,下面简单的来看一下:
- var user = {
- name: 'tom',
- age: 20,
- gender: 'male'
- }
- var test = document.getElementByid('test')(function(name) {
- test.onclick = function() {
- test.innerHTML = name;
- }
- })(user.name);
- user = null;
因为当时已经是饭点时间,面试官也有点急着去吃饭,就没有再问我问题了。
二面面完,已经是中午 12 点多了。我那哥们儿鹏哥已经在门口等着我一起去饭堂。CVTE 的饭菜不错,自助餐,但是,那个碗有点小,没打多少就装满了。饭堂里,公司的人挺热情的,因为背着书包大家都知道我是来面试的,就会问我一些问题,或曰 "你来面试什么岗位啦",或曰 "你是本科生还是研究生啦"。。。反正就是挺热情的嘛。打好饭菜刚刚坐下来,还没有吃几口饭,鹏哥说刚刚接到 HR 消息,班车马上就要开走了,要我快点吃。我下午还要回来公司上班,在这鸟不拉屎的地方如果错过了班车,后果有多严重可想而知的。于是我就干脆不吃了,直接把饭菜倒掉,直跑楼下坐班车。刚刚上车,司机就开车了,驶向香雪地铁站。再见了,CVTE!
首先说一下这次面试的水平吧,其实,从去年 9 月到现在,我已经有大半年没有参加过任何面试了,很多基础和面经宝典也忘记得差不多了。另外,本来并没有打算来面试的,只是和鹏哥开了个玩笑而已,结果弄假成真,他都已经帮我去找 HR 安排好了。所以也不好放人飞机嘛!如果不去这不是在搞人家吗?这是第一次面试 CVTE,以前听人说 CVTE 对算法要求比较高、面试相对是比较难的。这次自己反而没有怎么被问到算法题目。面试题目还算正常、难度还可以接受。关于对 CVTE 的评价,就不好下结论,因为毕竟就只是去面了一个上午试而已,不够了解这是个什么样的公司。不过,总的来说,从有班车接送、到面试时有水果饮料、再到面完试带考生去饭堂吃饭,我觉得 CVTE 是不还不错的公司呢!至于面试结果,现在还没有出来哈。也许过了,也许挂了,谁又知道呢?
来源: http://www.cnblogs.com/yugege/p/6526215.html