据说昨天有个学弟参加了2020年阿里的前端校招笔试,作为一个前端怎么能错过这种机会,今天赶忙让他把题目发过来研究一下,这里贴出选择题供你们共同窗习,由于没拿到标准答案,题目是我本身作的不保证都对,欢迎你们指正探讨,有标准答案了也会更新。javascript
1. 如下关于Javascript执行引擎描述正确的是:
解析:css
- 执行阶段,V8会先生成字节码(快),再在运行过程当中逐步将高频函数转化成优化后的机器码(慢)。相关资料
- Node.js经过libuv抽象封装层不一样平台使用不一样方法实现异步I/O,windows是IOCP,*nix是自定义线程池(详情可参考《深刻浅出nodejs》第三章)。
- Node的Buffer模块性能相关部分有C++实现,因此Buffer对象的内存分配不是在V8的堆内存中,而是在Node的C++层面实现内存申请的(详情可参考《深刻浅出nodejs》第六章)。
- Chakra是IE的js引擎,Firefox的js引擎是SpiderMonkey。
2. 对于解构一下说法错误的是:
解析:html
- 结构赋值的默认值只对undefined有效。
- 不定参数只能出如今最后一个位置。
3.下列对css外边距描述正确的是(不考虑BFC对边距的影响):
解析:前端
- 块级元素的上外边距和下外边距有时会合并(或折叠)为一个外边距,其大小取其中的最大者,这种行为称为外边距折叠(margin collapsing),有时也翻译为外边距合并,一般状况下上下两个相邻块元素的margin会发生合并。相关资料
- 一个空元素中不包含任何内容,而且在其 margin-top 与 margin-bottom 之间没有边框、内边距、行内内容、height、min-height 将二者分开,也会发生折叠。
4.如下对于git说法正确的是:
解析:html5
git pull
至关于先执行git fetch
再执行git merge
,可是能够经过--rebase
将第二步变为git rebase操做
。 相关资料
5.如下关于跨域说法错误的是?
解析:java
- 协议,端口和主机都相同,则两个页面算同源。 相关资料
6.如下说法正确的是?
解析:node
new URL(url, [base])
第一个参数必须为一个完整url(不能缺乏协议)或相对url。相关资料
- async function本质上是generators+ promises模式的语法糖
- NPM模块版本号必须为x.y.z形式
- process.nextTrick是微任务,setImmediate是宏任务,执行时机不一致
7.下面哪些是浏览器的缓存相关功能?
解析:git
- File System API是文件系统相关API
8.关于HTML<script>标签的defer和async属性,说法正确的是
解析: github
9.如下操做,可以在必定程度上保证npm模块安全的是
解析:npm
- synk是一个帮助发现、修复和监视开放源码中的已知漏洞的命令行和构建时工具。
- --ignore-scripts 能够帮助咱们安装一个npm包但不执行它的脚本。 相关资料
10.如下描述正确的是
解析:
- 块格式化上下文(Block Formatting Context,BFC) 是页面中的一块渲染区域,能够看做是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,而且 BFC 具备普通容器所没有的一些特性。建立BFC的一些方式有浮动(元素的 float 不是 none),行内块元素(元素的 display 为 inline-block),overflow 值不为 visible 的块元素等。 相关资料
- 浮动元素和绝对定位元素的外边距不会折叠。
疑问点说明
不少朋友说第8题最后一个选项defer属性能保证顺序不该该选上,可是《javascript高级程序设计第3版》(p13)这个地方提了一下。
html5规范要求脚本按照它们出现的前后顺序执行,所以第一个延迟脚本会先于第二个延迟脚本执行,而这两个脚本会先于DOMContentLoaded事件执行。在现实当中,延迟脚本并不必定会按照顺序执行,也不必定会在DOMContentLoaded事件触发前执行,所以最好只包含一个延迟脚本。
因此我这里就按照实际状况选上了,若是不选也有理论支持,因此看你们本身支持哪一种见解了,思否的这个问题下也有讨论,感兴趣的能够参与一下。 问题地址
第九题npm两步验证那个选项,我后面加了不肯定,是由于这题的安全我理解为使用者确保引入包的安全,而两步验证属于开发者保证本身发布包安全性的一种行为,我这里不是很想选上,等后面标准答案吧。