前言
本来走的是内推渠道被推到笔试,以为会自动申请笔试就没有再关注。结果今天看到群里有人讨论笔试题,急忙跑去校招中心去看,发现所有的状态还是老样子,接着尝试进行了新投递,没想到立马收到了笔试通知,不过此时距笔试结束时间只有 40 分钟(整个笔试答题时间 60 分钟),没办法只能硬着头皮上了。
另外没想到整个笔试过程居然还要视频监考,我可是光着膀子在家答题啊,时间紧迫也顾不上穿衣服,啊啊啊啊啊啊啊!
题目
由于时间比较紧,所以没有刻意记录所有题目,以下内容都是根据记忆整理的:
总共选择题、填空题和代码题三种题型。选择题大多比较简单,偏重基础知识的掌握,这部分内容只要认真看过两本前端基础书籍都不会有太大的问题。
选择题
- 阻止事件冒泡的方法(比较简单,有一个干扰项)
- 无序列表的标签(这个太简单了)
- 标准盒模型及 IE 盒模型宽度计算的问题(判断说法对错)
- 判断哪一个选项不是 CSS 的单位,每个选项包含两个单位(由于答题仓促,直接选了不太常见的
mm
的选项,感觉是跪了)
填空题
- 判断对象自身是否包含某个属性,主要考察 hasOwnProperty 方法使用;
- 编写 filter 方法的筛选函数,主要考察 filter 函数的使用(这个记不清筛选函数应该返回
true
还是false
- -); - 二维数组的扁平化,要求填一个方法名和函数参数的函数体(这个题没太有头绪);
代码题
- 使用尽可能多的方法实现垂直水平居中;(比较实际的需求,我用了
absolute
+transform
、inline-block
及table-cell
三种方法) - 对象 click 本来绑定了 save 处理函数,要求增加 confirm 确认是否执行 save;(两个思路:1. 先解绑 save,然后重新绑定一个新的函数加入 confirm 逻辑;2. 在捕获阶段进行 confirm 根据结果选择是否触发;由于第二个思路会阻止所有 click 事件,因此选择使用思路 1 实现)
- 实现一个保存优先级的对象,包括两个方法:add 及 print,调用
add('item1', 5)
将保存 item1 并赋优先级 5,调用print()
实现按照优先级从大到小输出 item。(需求很简单,也比较容易实现,只是需要注意代码风格和代码规范,很遗憾由于时间问题这个题目没有完成。)
总结
好像一共有 13 题,能够回忆起来的只有这么多,供后来的同学参考吧。题目总体来说比较简单,基础扎实、有一定开发经验的童鞋都不会有太大问题,另外建议大家在做代码题的时候选择自己平时使用的编辑器,一是方便调试,二是配合 zencoding 等插件可以节约大量时间,调试无误后再将代码复制到答题框中即可。
最遗憾的就是这次时间没有把握好,继续努力!
翌日补充
看了一下群里其他人发的笔试题截图,发现应该一共有 11 道题,一共回忆起 10 道,剩下的一道实在没有印象了。
另外,仔细研究了一下二维数组扁平化的题目,原题是这样的:
var matrix = [ |
要求填调用的方法,和作为方法参数的函数体。
首先查找了一下所有以函数作为参数的数组方法,包括 every filter find findIndex map reduce reduceRight some sort。在查找这些方法的过程中没想到竟然意外收获了答案,这道题目竟然是 MDN 中 reduce 方法的一段 DEMO。所以这个题目的正解就是:
var matrix = [ |