听说昨天有个学弟参加了2020年阿里的前端校招笔试,做为一个前端怎么能错过这种机会,今天赶紧让他把题目发过来研究一下,这里贴出选择题供大家共同学习,因为没拿到标准答案,题目是我自己做的不保证都对,欢迎大家指正探讨,有标准答案了也会更新。
1. 以下关于Javascript执行引擎描述正确的是:D
A: ECMAScript 2015中规定了执行引擎需要实现EventLoop机制。
B: V8作为最先进的Javascript执行引擎,可以在执行阶段对所有代码进行优化。
C: Node.js通过V8实现异步I/O。
D: Node.js的Buffer类型对象在创建时内存不会分配到V8堆上。
E: Chakra是Firefox内嵌的Javascript执行引擎。
F: 代码正确的情况下,垃圾回收不会导致有内存无法回收。
解析:
执行阶段,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. 对于解构一下说法错误的是:D
A: 不完全结构,也会成功,不会报错。
B: 只要支持Iterator接口,都可以被结构赋值。
C: null可以替代默认值,而成功的结构赋值。
D: 结构中不定参数可以出现在除第一个以外的其它的其他位置。
E: 解构是先找到同名的属性,然后再赋给对应的变量。
F: 默认值可以引用结构赋值的其他变量,但该变量必须已经声明。
解析:
结构赋值的默认值只对undefined有效。
不定参数只能出现在最后一个位置。
3.下列对css外边距描述正确的是(不考虑BFC对边距的影响):C
A: 外边距的css代码是padding
B: 两个上下相邻的同级元素Div1,Div2。Div1的下边距是10px,Div2的上边距是10px。Div1和Div2的间距是20px
C: 下相邻的同级元素Div1,Div2。Div1的下边距是20px,Div2的上边距是10px。Div1和Div2的间距是20px
D: 的值为(10px 20px 30px)。所以其上边距为10px,下边距为20px,左边距为30px,右边距为30px
E: 元素的高度,边框,内边距都是0,上下外边距为20px,那么这个空元素的框模型的高度为40px
F: 元素的高度,边框,内边距都是0,上下外边距为20px,那么这个空元素的框模型的高度为20px
解析:
块级元素的上外边距和下外边距有时会合并(或折叠)为一个外边距,其大小取其中的最大者,这种行为称为外边距折叠(margin collapsing),有时也翻译为外边距合并,通常情况下上下两个相邻块元素的margin会发生合并。相关资料
一个空元素中不包含任何内容,并且在其 margin-top 与 margin-bottom 之间没有边框、内边距、行内内容、height、min-height 将两者分开,也会发生折叠。
4.以下对于git说法正确的是:C
A: git是由github创造的代码管理工具
B: git和svn实现的原理是一样的
C: 从git原理设计上来讲,执行git pull和先执行git fetch再执行git merge效果是一样的。
D: git将代码提交到远程仓库的命令是git commit
E: git rm只会将文件从git提交记录中删除,不会删除磁盘上的物理文件
F: git push -f将会重新提交当前的commit节点,不会重写历史commit
解析:
git pull相当于先执行git fetch再执行git merge,但是可以通过–rebase将第二步变为git rebase操作。 相关资料
5.以下关于跨域说法错误的是: A
A: http://taobao.com/a.html和https://taobao.com/b.html是相同的域名,属于同源
B: 通过document.domain的调用,可以使ifram内嵌的http://a.taobao.com/page.html通过父页面http://taobao.com/home.html的同源检测
C: CSS中通过@font-face使用字体也会有跨域问题
D: Cookie,LocalStorage和IndexedDB都会受到同源策略的限制
E: postMessage,JSONP,WebSocket都是常用的解决跨域的方案
F: 跨域资源共享规范中规定了除了GET之外的HTTP请求,或者搭配某些MINE类型的POST请求,浏览器都需要先发一个OPTIONS请求。
解析:
协议,端口和主机都相同,则两个页面算同源。 相关资料
6.以下说法正确的是: C
A: 通过new URL(‘www.taobao.com’) ,可以解析url内容。
B: console.log()是异步调用
C: Async functions本质上是Generators的语法糖
D: 在发布NPM模块时,版本号可以任意
E: process.nextTrick()和setImmediate()执行时机一致
F: Node.js是一门后端语言
解析:
new URL(url, [base])第一个参数必须为一个完整url(不能缺少协议)或相对url。相关资料
async function本质上是generators+ promises模式的语法糖
NPM模块版本号必须为x.y.z形式
process.nextTrick是微任务,setImmediate是宏任务,执行时机不一致
7.下面哪些是浏览器的缓存相关功能: ABCDF
A: indexDB
B: localStorage
C: sessionStorage
D: applicationCache
E: File System API
F: Cache API
解析:
File System API是文件系统相关API
8.关于HTML<script>
标签的defer和async属性,说法正确的是: BCDE
A: 加了async属性的脚本加载和执行不会阻塞页面的渲染
B: 加了defer属性的脚本加载和执行不会阻塞页面的渲染
C: 加了async属性的脚本加载完成后会立马执行
D: 加了defer属性的脚本加载完成后会在DOMContentLoaded事件前执行
E: 所有加了defer属性的脚本加载完成后不保证执行顺序
解析:
9.以下操作,能够在一定程度上保证npm模块安全的是: ACF
A: 使用安全服务检查,如:synk等
B: 开启npm两步验证 (不确定)
C: 使用lockfile
D: 在需要的时候,把密钥放在包里,方便使用
E: 直接使用满足功能的包
F: 安装包时使用–ignore-scripts
解析:
synk是一个帮助发现、修复和监视开放源码中的已知漏洞的命令行和构建时工具。
–ignore-scripts 可以帮助我们安装一个npm包但不执行它的脚本。 相关资料
10.以下描述正确的是: BDEF
A: 标准盒子模型中:盒子所占宽度 = 左右margin + 左右border + 左右padding + width
B: 当样式box-sizing:border-box时,块级别元素width包括border、padding
C: IE盒子模型中:盒子总宽度 = 左右margin + 左右border + width
D: 通过设置overflow:hidden可以创建一个新的BFC
E: 一个浮动的div加文字可能会出现文字环绕的情况,此时可以通过创建一个新的BFC来解决该问题。
F: 绝对定位元素的外边距不会折叠
解析:
块格式化上下文(Block Formatting Context,BFC) 是页面中的一块渲染区域,可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。创建BFC的一些方式有浮动(元素的 float 不是 none),行内块元素(元素的 display 为 inline-block),overflow 值不为 visible 的块元素等。 相关资料
浮动元素和绝对定位元素的外边距不会折叠。
原文地址: https://juejin.im/post/5d67896f6fb9a06ac82459e9?utm_source=gold_browser_extension