據說昨天有個學弟參加了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兩步驗證那個選項,我後面加了不肯定,是由於這題的安全我理解爲使用者確保引入包的安全,而兩步驗證屬於開發者保證本身發佈包安全性的一種行爲,我這裏不是很想選上,等後面標準答案吧。