新鲜出炉的2020年阿⾥前端校招笔试10道选择题
听说昨天有个学弟参加了2020年阿⾥的前端校招笔试,做为⼀个前端怎么能错过这种机会,今天赶紧让他把题⽬发过来研究⼀下,这⾥贴出选择题供⼤家共同学习,因为没拿到标准答案,题⽬是我⾃⼰做的不保证都对,欢迎⼤家指正探讨,有标准答案了也会更新。
1. 以下关于Javascript执⾏引擎描述正确的是:
ECMAScript 2015中规定了执⾏引擎需要实现EventLoop机制。
V8作为最先进的Javascript执⾏引擎,可以在执⾏阶段对所有代码进⾏优化。
Node.js通过V8实现异步I/O。
Node.js的Buffer类型对象在创建时内存不会分配到V8堆上。
Chakra是Firefox内嵌的Javascript执⾏引擎。
代码正确的情况下,垃圾回收不会导致有内存⽆法回收。
解析:
执⾏阶段,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. 对于解构⼀下说法错误的是:
不完全结构,也会成功,不会报错。
只要⽀持Iterator接⼝,都可以被结构赋值。
null可以替代默认值,⽽成功的结构赋值。
结构中不定参数可以出现在除第⼀个以外的其它的其他位置。
解构是先到同名的属性,然后再赋给对应的变量。
默认值可以引⽤结构赋值的其他变量,但该变量必须已经声明。
解析:
结构赋值的默认值只对undefined有效。
不定参数只能出现在最后⼀个位置。
3.下列对css外边距描述正确的是(不考虑BFC对边距的影响):
外边距的css代码是padding
两个上下相邻的同级元素Div1,Div2。Div1的下边距是10px,Div2的上边距是10px。Div1和Div2的间距是20px
两个上下相邻的同级元素Div1,Div2。Div1的下边距是20px,Div2的上边距是10px。Div1和Div2的间距是20px
外边距的值为(10px 20px 30px)。所以其上边距为10px,下边距为20px,左边距为30px,右边距为30px
⼀个空元素的⾼度,边框,内边距都是0,上下外边距为20px,那么这个空元素的框模型的⾼度为40px
⼀个空元素的⾼度,边框,内边距都是0,上下外边距为20px,那么这个空元素的框模型的⾼度为20px
解析:
块级元素的上外边距和下外边距有时会合并(或折叠)为⼀个外边距,其⼤⼩取其中的最⼤者,这种⾏为称为外边距折叠(margin collapsing),有时也翻译为外边距合并,通常情况下上下两个相邻块元素的margin会发⽣合并。
⼀个空元素中不包含任何内容,并且在其 margin-top 与 margin-bottom 之间没有边框、内边距、⾏内内容、height、min-height
将两者分开,也会发⽣折叠。
4.以下对于git说法正确的是:
git是由github创造的代码管理⼯具
git和svn实现的原理是⼀样的
从git原理设计上来讲,执⾏git pull和先执⾏git fetch再执⾏git merge效果是⼀样的。
git将代码提交到远程仓库的命令是git commit
git rm只会将⽂件从git提交记录中删除,不会删除磁盘上的物理⽂件
git push -f将会重新提交当前的commit节点,不会重写历史commit
解析:
git pull相当于先执⾏git fetch再执⾏git merge,但是可以通过--rebase将第⼆步变为git rebase操作。
5.以下关于跨域说法错误的是?
taobao/a.html和taobao/b.html是相同的域名,属于同源
通过document.domain的调⽤,可以使ifram内嵌的a.taobao/page.html通过⽗页⾯taobao/home.html的同源检测CSS中通过@font-face使⽤字体也会有跨域问题
Cookie,LocalStorage和IndexedDB都会受到同源策略的限制
postMessage,JSONP,WebSocket都是常⽤的解决跨域的⽅案
跨域资源共享规范中规定了除了GET之外的HTTP请求,或者搭配某些MINE类型的POST请求,浏览器都需要先发⼀个OPTIONS请求。
解析:
协议,端⼝和主机都相同,则两个页⾯算同源。
6.以下说法正确的是?
通过new URL('www.taobao') ,可以解析url内容。
console.log()是异步调⽤
Async functions本质上是Generators的语法糖
在发布NPM模块时,版本号可以任意
Node.js是⼀门后端语⾔
解析:
new URL(url, [base])第⼀个参数必须为⼀个完整url(不能缺少协议)或相对url。
async function本质上是generators+ promises模式的语法糖
NPM模块版本号必须为x.y.z形式
7.下⾯哪些是浏览器的缓存相关功能?
indexDB
localStorage
sessionStorage
applicationCache
File System API
前端websocket怎么用Cache API
解析:
File System API是⽂件系统相关API
8.关于HTML<script>标签的defer和async属性,说法正确的是
加了async属性的脚本加载和执⾏不会阻塞页⾯的渲染
加了defer属性的脚本加载和执⾏不会阻塞页⾯的渲染
加了async属性的脚本加载完成后会⽴马执⾏
加了defer属性的脚本加载完成后会在DOMContentLoaded事件前执⾏所有加了defer属性的脚本加载完成后不保证执⾏顺序
解析:
9.以下操作,能够在⼀定程度上保证npm模块安全的是
使⽤安全服务检查,如:synk等
开启npm两步验证 (不确定)
使⽤lockfile
在需要的时候,把密钥放在包⾥,⽅便使⽤
直接使⽤满⾜功能的包
安装包时使⽤--ignore-scripts
解析:
是⼀个帮助发现、修复和监视开放源码中的已知漏洞的命令⾏和构建时⼯具。
--ignore-scripts 可以帮助我们安装⼀个npm包但不执⾏它的脚本。
10.以下描述正确的是
标准盒⼦模型中:盒⼦所占宽度 = 左右margin + 左右border + 左右padding + width
当样式box-sizing:border-box时,块级别元素width包括border、padding
IE盒⼦模型中:盒⼦总宽度 = 左右margin + 左右border + width
通过设置overflow:hidden可以创建⼀个新的BFC
⼀个浮动的div加⽂字可能会出现⽂字环绕的情况,此时可以通过创建⼀个新的BFC来解决该问题。
绝对定位元素的外边距不会折叠
解析:
块格式化上下⽂(Block Formatting Context,BFC) 是页⾯中的⼀块渲染区域,可以看作是隔离了的独⽴容器,容器⾥⾯的元素不会在布局上影响到外⾯的元素,并且 BFC 具有普通容器所没有的⼀些特性。创建BFC的⼀些⽅式有浮动(元素的 float 不是
none),⾏内块元素(元素的 display 为 inline-block),overflow 值不为 visible 的块元素等。
浮动元素和绝对定位元素的外边距不会折叠。
疑问点说明
很多朋友说第8题最后⼀个选项defer属性能保证顺序不应该选上,但是《javascript⾼级程序设计第3版》(p13)这个地⽅提了⼀下。
html5规范要求脚本按照它们出现的先后顺序执⾏,因此第⼀个延迟脚本会先于第⼆个延迟脚本执⾏,⽽这两个脚本会先于
DOMContentLoaded事件执⾏。在现实当中,延迟脚本并不⼀定会按照顺序执⾏,也不⼀定会在DOMContentLoaded事件触发前执⾏,因此最好只包含⼀个延迟脚本。
所以我这⾥就按照实际情况选上了,如果不选也有理论⽀持,所以看⼤家⾃⼰⽀持哪种看法了,思否的这个问题下也有讨论,感兴趣的可以参与⼀下。
第九题npm两步验证那个选项,我后⾯加了不确定,是因为这题的安全我理解为使⽤者确保引⼊包的安全,⽽两步验证属于开发者保证⾃⼰发布包安全性的⼀种⾏为,我这⾥不是很想选上,等后⾯标准答案吧。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论