座標杭州,我在上半年陸續找過一些前端實習,記錄面經(只記錄技術面,不記錄HR面)於此,供你們分享,只記得其中一些問題了,見諒。
現正在準備秋招,你們一同加油吧!javascript
Promise
如何實現鏈式調用
Promise.then
Promise2
在 Promise1
以後調用
async await
Promise.all
for...in
和 for...of
的區別
for...in
遍歷鍵名(Key)並轉化爲字符串,for...of
遍歷鍵值(Value)for...in
語句以任意順序遍歷一個對象自有的、繼承的、可枚舉的、非 Symbol 的屬性for...in
更適合遍歷對象,for...of
更適合遍歷數組。for (let i in [1, 2, 3]) {
console.log(typeof i); // string 數組下標被轉化字符串
console.log(i); // '1', '2', '3'
}
var triangle = { a: 1, b: 2, c: 3 };
function ColoredTriangle() {
this.color = 'red';
}
ColoredTriangle.prototype = triangle;
var obj = new ColoredTriangle();
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) { // 若是去了 hasOwnProperty() 這個約束條件會怎麼樣?
console.log(`obj.${prop} = ${obj[prop]}`); // obj.color = red
}
}
複製代碼
Set
和 Map
Set
有哪些遍歷方法
Set.prototype.values()
Set.prototype.keys() // 等於 Set.prototype.values()
Set.prototype.entries() // [value, value]數組
Set.prototype.[Symbol.iterator]()
// 以上所有返回一個新的迭代器對象
Set.prototype.forEach()
for ... of
複製代碼
let [x = 1] = [undefined];
x // 1
let [x = 1] = [null];
x // null
// 注意,ES6 內部使用嚴格相等運算符(===),判斷一個位置是否有值。因此,只有當一個數組成員嚴格等於undefined,默認值纔會生效。
複製代碼
CSS、JS、React
實現動畫:方塊從屏幕左下角運動到右上角
translate + animation
position + top/left + transition
CSS
的最終表現分爲如下四步:Recalculate Style
-> Layout
-> Paint Setup and Paint
-> Composite Layers
,即查找並計算樣式 -> 排布 -> 繪製 -> 組合層。transform
是位於 Composite Layers
層,而 width
、left
、margin
等則是位於 Layout
層,在 Layout
層發生的改變一定致使Paint Setup and Paint
-> Composite Layers
,因此相對而言使用 transform
實現的動畫效果確定比 left
這些更加流暢。transform
等開啓GPU加速。requestAnimationFrame / setTimeout
Ref
Dom
interface(接口)
和type(類型別名)
的區別
&,extnds
)interface
可以聲明合併type
能夠聲明基本類型別名,聯合類型,元組等類型
type DiffName = string;
type Pet = Dog | Cat
TS class
相對於 ES6 class
的拓展
readOnly
只讀屬性abstract
抽象類包含抽象方法,必須在子類中實現,且子類使用 extends
private
protected
說一下經常使用的模塊html
path
fs
stream
http
util
實現 EventEmitter
,以及應用場景前端
emit
on
NodeJS
是基於異步事件驅動的架構,須要一個事件調度中心stream
fs
net
http
都繼承 EventEmitter
發佈-訂閱
模式和 觀察者
模式的區別java
發佈-訂閱
模式,發佈者和訂閱者不須要彼此瞭解,有消息隊列的存在觀察者
模式主要以同步方式實現,發佈-訂閱
模式主要以異步方式實現Subject
還保留了 Observers
的記錄如何實現腳手架react
process.argv
獲取參數,下載 Github 對應的 模板
,修改 模板內容
npm login
npm publish
Redux
的原理和流程Mobx
的原理,如何實現數據的監聽
proxy
Redux
中爲何要直接替換數據源,而不是修改
redux
經過比較對象的引用來判斷是否同一個對象,若是是,則繼續使用舊的 state
,因此不會有任何的變化immutable.js
嗎Antd
按需加載的原理import { Button } from 'antd';
ReactDOM.render(<Button>xxxx</Button>);
↓ ↓ ↓ ↓ ↓ ↓
var _button = require('antd/lib/button');
require('antd/lib/button/style');
ReactDOM.render(<_button>xxxx</_button>);
複製代碼
HTTP
OSI
七層HTTP
和 HTTPS
HTTP2
websocket
GET POST DELETE PUT OPTIONS HEAD CONNECT TRACE PATCH
cookie
token
loader
和 plugin
嗎tree shaking
splitChunks
React
的按需加載如何實現
webpack
的動態導入 (dynamic imports)React.lazy React.suspense
React
的 HOC
const HOC = (WrappedComponent) =>
class extends WrappedComponent {
render() {
if (this.props.isRender) {
return super.render();
} else {
return null;
}
}
複製代碼
React
怎麼和 Redux
結合
react-redux
的 connect
高階函數Redux
的 stroe
存儲在 React
何處
Context
DomContentedLoaded
DomContentedLoaded
是否和 Raect
生命週期裏的 render
同步
tab
頁,其中一個 tab
頁更改了權限,怎麼保持另外一個 tab
頁權限同步Expires
表示一個絕對時間,容許客戶端在這個時間以前不去檢查(發請求)Cache-Control
public
客戶端和 CDN
代理服務器均可以緩存private
客戶端能夠緩存max-age=60
緩存內容將在60秒後失效no-cache
每次請求都須要通過服務端的協商緩存no-store
禁用緩存200(from disk/memory cache)
HTTP
請求If-Modified-Since/Last-modified
資源的最後修改時間
If-None-Match/Etag
根據實體內容生成的一段hash字符串304 Not Modified
304
中攜帶 response
response headers
SPA
應用打包出來的 index.html
是否存在緩存
CDN
CDN
主要部署什麼資源CDN
如何更新資源JS + REM
VW + VH
DRP
window.devicePixelRatio
@media -webkit-min-device-pixel-ratio
React
的生命週期
Fiber
架構Redux
的工做流程Redux
如何實現異步操做
Redux-thunk
是一個容許你編寫返回一個函數而不是一個 action
的 actions creators
的中間件。若是知足某個條件,thunk
則能夠用來延遲 action
的派發(dispatch
),這能夠處理異步 action
的派發(dispatch
)。Mobx
如何轉化可觀察對象爲原生數組
slice()
Koa
洋蔥模型的理解webpack
的構建速度
TS
中用到哪些語法
Decorators
keyof
typeof
操做符URL
發生了什麼OSI
七層模型HTTPS
,什麼是對稱加密,非對稱加密先作了一套筆試題,限時半個小時,比較簡單,主要考察基礎,還記得的題目有webpack
CSS
選擇器的優先級
position
的各個屬性
static
sticky
display:none
和 visibility:hidden
的區別new Boolean(false) && true
返回什麼,並解釋<script> alert(typeof a); </script>
<script> function a() { a = 3; } </script> // 會出現什麼內容?
複製代碼
React Hooks
Virturl DOM
React
在 16.8 版本爲咱們正式帶來了 Hooks API
。什麼是 Hooks
?簡而言之,就是對函數式組件的一些輔助,讓咱們沒必要寫 class
形式的組件也能使用 state
和其餘一些 React
特性。Diff
算法的實現過程ES6 class
的 static
屬性在構造函數的原型上嗎
ACK
:確認序號有效SYN
:發起一個新鏈接FIN
:釋放一個鏈接PV / UV
的理解,該如何去實現
PV (page view)
,即頁面瀏覽量,一個訪問者在 24 小時內到底看了你網站幾個頁面,不重複計算
UV (unique visitor)
,即惟一訪問者,指你的網站 24 小時內有多少不一樣 IP 地址的訪問web
判斷頁面來源面試
referrer
字段簡述 JWT
算法
Header
npm
{
"alg": "HS256",
"typ": "JWT"
}
複製代碼
Payload
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
複製代碼
Signature
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
複製代碼
Header 和 Payload 串型化的算法是
Base64URL
JWT 做爲一個令牌(token),有些場合可能會放到 URL(好比 api.example.com/?token=xxx)。Base64 有三個字符+、/和=,在 URL 裏面有特殊含義,因此要被替換掉:=被省略、+替換成-,/替換成_ 。這就是 Base64URL 算法。
圖片懶加載,怎麼保證未加載的圖片佔據空間
將來前端的職業規劃