當前位置:首頁 » 網頁前端 » 移動web工程師面試問題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

移動web工程師面試問題

發布時間: 2022-09-22 22:23:23

A. 上海移動通信網路工程師助理(校園)二面一般問什麼什麼程序,刷人多嗎面過的請談下經歷,多謝!

看你的一面是怎麼樣的了,一面如果問你 技術性的東西,那麼二面就會問一些 你對企業的理解,對自己的規劃,還有一些奇怪的問題。回答一些奇怪的問題,你可以稍微誇張一點,搞的你很有壯志雄心一樣,顯得自己要有信心一點。

B. hr如何面試web前端工程師,該問哪些技術問題

一、基本知識

我們生活在互聯網時代,你想知道的任何事情幾乎都能在15分鍾內找到相關信息。可是,能找到信息並不等於你會使用它。我認為所有前端工程師至少都應 該掌握某些基本的知識,才能有效地完成自己的工作。如果一遇到問題,就停下工作上網四處搜索解決方案,怎麼可能保證按期完成工作呢?聽聽,還有誰在說「我 不知道,但我可以上網搜到。」請這些同學把手舉起來,讓大家認識一下(immediately raises a flag for me.)。下面我列出一些基本的知識點,這些都是我認為一名前端工程師(無論工作年頭長短)在沒有任何外來幫助的情況應該知道的。
[list][*]
DOM結構——兩個節點之間可能存在哪些關系以及如何在節點之間任意移動。
[*]
DOM操作——怎樣添加、移除、移動、復制、創建和查找節點。
[*]
事件——怎樣使用事件以及IE和DOM事件模型之間存在哪些主要差別。
[*]
XMLHttpRequest——這是什麼、怎樣完整地執行一次GET請求、怎樣檢測錯誤。
[*]
嚴格模式與混雜模式——如何觸發這兩種模式,區分它們有何意義。
[*]
盒模型——外邊距、內邊距和邊框之間的關系,IE 8以下版本的瀏覽器中的盒模型有什麼不同。
[*]
塊級元素與行內元素——怎麼用CSS控制它們、它們怎樣影響周圍的元素以及你覺得應該如何定義它們的樣式。
[*]
浮動元素——怎麼使用它們、它們有什麼問題以及怎麼解決這些問題。
[*]
HTML與XHTML——二者有什麼區別,你覺得應該使用哪一個並說出理由。
[*]
JSON——它是什麼、為什麼應該使用它、到底該怎麼使用它,說出實現細節來。
[/list]
重申一下,上述這些知識點都應該是你應該「想都不用想」的東西。我一開始問的所有問題都是想摸清你對所有這些領域知識的掌握程度。雖然上面列出的這些知識點並沒有面面俱到,但我覺得你至少應該掌握這些,才有可能跟我坐到一間辦公室里來。

二、少量提問

我非常贊同面試者問的問題越少越好。反復問應聘者各種問題既不公平,也很無聊。我在任何一次面試中,通常只問三個大問題,但每個問題又會涉及我所能想到的多個方面。回答每個大問題一般要經過幾個步驟,這樣我就可以在每個步驟中穿插著問一些小問題。比如說:

現在有一個正顯示著Yahoo!股票價格的頁面。頁面上有一個按鈕,你可以單擊它來刷新價格,但不會重新載入頁面。請你描述一下實現這個功能的過程,假設伺服器會負責准備好正確的股票價格數據。

這個問題牽扯到一組我想要考察的基本知識點:DOM結構、DOM操作、事件處理、XHR和JSON。如果我要求你對換一種處理股票價格的方式,或者 讓你在頁面中顯示其他信息,就可以把更多的知識點包括進來。對於經驗比較豐富應聘者,我也可以自如地擴展要考察的知識范圍,最簡單像JOSN與XML的區 別、安全問題、容量問題,等等。
我還希望應聘者給出的任何解決方案中都不要使用庫。我想看到最原生態的代碼,你就當頁面中沒有包含任何庫。你說你對哪個庫了解多少多少,但我不能把 關於庫的知識作為評判能力的因素,因為庫是會隨時間變化的。我需要的是真正理解庫背後的機制,特別是能夠徒手寫出一個自己的庫的人。

三、解決問題

做為一名前端工程師,最值得高興的事莫過於解決同一個問題會有很多種不同的方法,而你要做的就是找出最合適的方法來。我在提問的時候,經常會在應聘 者解釋完一種方法後問他們還有沒有第二種方法。此時我會跟他們說,假設你的這個方法由於種種原因被否決了,那麼你還能不能給出另一種方法。這樣做可以達到 兩個目的。
首先,可以測試出他們是否在毫無意義地復述書本中的東西。不能不承認,某些人確實有過目不忘的天賦,聽他們在那裡滔滔不絕地講,你會覺得他們什麼都 明白。可是,只要一跟這些人談到怎麼查找方案無效的原因,以及能否拿出一個新方案來,他們往往就傻眼了。這時候,如果我聽到「我不明白這個方案為什麼不夠 好」之類的反問,心裡立刻就明白我的問題已經超出了他們的能力范圍,而他們只是想拿自己死記硬背的結論來矇混過關。
其次,可以測試出他們已經掌握的(還是那句話,「想都不用想」)瀏覽器技術知識。如果他們對瀏覽器平台的核心知識有較好的理解,想出解決同一問題的不同方案根本沒有那麼難。
對一名前端工程師來說,這絕對是最重要的能力。前端工程師在工作中遇到本該如此卻並未如此的難題(說你啦,IE6),應該說是一件很平常的事。一個方案無效就無計可施的人,做不了前端工程師。
考核應聘者解決問題能力的另一層原因,與我的個人喜好有關。在搞清楚應聘者知道什麼不知道什麼之後,我就會想著問一個他們知識領域之外的問題。這樣 做的目的,就是想看看他們怎樣運用已有的知識解決新問題。在解決問題的每一步,我也准備了一些提示,以防有人會卡殼打艮(在我面前15分鍾一言不發,對我 評價這個人毫無幫助)。我真正感興趣的,是他們能夠從上一步前進到下一步。我希望看到一個人就在我眼前學到新知識。
注意:所有問題都與瀏覽器技術相關。我不相信出幾道抽象的邏輯題,就能夠考出某人解決Web技術問題的能力。在我看來,這無異於讓素描大師畫肖像(或者讓劉翔跟博爾特同場競技),沒有意義,也得不到任何有價值的信息。

C. 前端開發工程師面試題目大全

HTML

Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?


HTML5為什麼只需要寫?


行內元素有哪些?塊級元素有哪些?空(void)元素有那些?


頁面導入樣式時,使用link和@import有什麼區別?


介紹一下你對瀏覽器內核的理解?


常見的瀏覽器內核有哪些?


html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分HTML和HTML5?


簡述一下你對HTML語義化的理解?


HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?


瀏覽器是怎麼對HTML5的離線儲存資源進行管理和載入的呢?


請描述一下cookies,sessionStorage和localStorage的區別?


iframe有那些缺點?


Label的作用是什麼?是怎麼用的?(加for或包裹)


HTML5的form如何關閉自動完成功能?


如何實現瀏覽器內多個標簽頁之間的通信?(阿里)


webSocket如何兼容低瀏覽器?(阿里)


頁面可見性(PageVisibilityAPI)可以有哪些用途?


如何在頁面上實現一個圓形的可點擊區域?


實現不使用border畫出1px高的線,在不同瀏覽器的Quirksmode和CSSCompat模式下都能保持同一效果。


網頁驗證碼是幹嘛的,是為了解決什麼安全問題?


title與h1的區別、b與strong的區別、i與em的區別?


CSS


介紹一下標準的CSS的盒子模型?低版本IE的盒子模型有什麼不同的?


CSS選擇符有哪些?哪些屬性可以繼承?


CSS優先順序演算法如何計算?


CSS3新增偽類有那些?


如何居中div?如何居中一個浮動元素?如何讓絕對定位的div居中?


display有哪些值?說明他們的作用。


position的值relative和absolute定位原點是?


CSS3有哪些新特性?


請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?


用純CSS創建一個三角形的原理是什麼?


css多列等高如何實現?


一個滿屏品字布局如何設計?


經常遇到的瀏覽器的兼容性有哪些?原因,解決方法是什麼,常用hack的技巧?


li與li之間有看不見的空白間隔是什麼原因引起的?有什麼解決辦法?


為什麼要初始化CSS樣式?


absolute的containingblock計算方式跟正常流有什麼不同?


CSS里的visibility屬性有個collapse屬性值是幹嘛用的?在不同瀏覽器下以後什麼區別?


position跟display、margincollapse、overflow、float這些特性相互疊加後會怎麼樣?


對BFC規范(塊級格式化上下文:blockformattingcontext)的理解?


CSS權重優先順序是如何計算的?


請解釋一下為什麼需要清除浮動?清除浮動的方式


zoom:1的清楚浮動原理?


移動端的布局用過媒體查詢嗎?


使用CSS預處理器嗎?喜歡那個?


CSS優化、提高性能的方法有哪些?


瀏覽器是怎樣解析CSS選擇器的?


在網頁中的應該使用奇數還是偶數的字體?為什麼呢?


margin和padding分別適合什麼場景使用?


抽離樣式模塊怎麼寫,說出思路,有無實踐經驗?[阿里航旅的面試題]


元素豎向的百分比設定是相對於容器的高度嗎?


全屏滾動的原理是什麼?用到了CSS的那些屬性?


什麼是響應式設計?響應式設計的基本原理是什麼?如何兼容低版本的IE?


視差滾動效果,如何給每頁做不同的動畫?(回到頂部,向下滑動要再次出現,和只出現一次分別怎麼做?)


::before和:after中雙冒號和單冒號有什麼區別?解釋一下這2個偽元素的作用。


如何修改chrome記住密碼後自動填充表單的黃色背景?


你對line-height是如何理解的?


設置元素浮動後,該元素的display值是多少?(自動變成display:block)


怎麼讓Chrome支持小於12px的文字?


讓頁面里的字體變清晰,變細用CSS怎麼做?(-webkit-font-smoothing:antialiased;)


font-style屬性可以讓它賦值為「oblique」oblique是什麼意思?


position:fixed;在android下無效怎麼處理?


如果需要手動寫動畫,你認為最小時間間隔是多久,為什麼?(阿里)


display:inline-block什麼時候會顯示間隙?(攜程)


overflow:scroll時不能平滑滾動的問題怎麼處理?


有一個高度自適應的div,裡面有兩個div,一個高度100px,希望另一個填滿剩下的高度。


png、jpg、gif這些圖片格式解釋一下,分別什麼時候用。有沒有了解過webp?


什麼是Cookie隔離?(或者說:請求資源的時候不要讓它帶cookie怎麼做)


style標簽寫在body後與body前有什麼區別?


什麼是CSS預處理器/後處理器?


JavaScript


介紹JavaScript的基本數據類型。


說說寫JavaScript的基本規范?


JavaScript原型,原型鏈?有什麼特點?


JavaScript有幾種類型的值?(堆:原始數據類型和棧:引用數據類型),你能畫一下他們的內存圖嗎?


Javascript如何實現繼承?


Javascript創建對象的幾種方式?


Javascript作用鏈域?


談談this對象的理解。


eval是做什麼的?


什麼是window對象?什麼是document對象?


null,undefined的區別?


寫一個通用的事件偵聽器函數(機試題)。


["1","2","3"].map(parseInt)答案是多少?


關於事件,IE與火狐的事件機制有什麼區別?如何阻止冒泡?


什麼是閉包(closure),為什麼要用它?


javascript代碼中的"usestrict";是什麼意思?使用它區別是什麼?


如何判斷一個對象是否屬於某個類?


new操作符具體幹了什麼呢?


用原生JavaScript的實現過什麼功能嗎?


Javascript中,有一個函數,執行時對象查找時,永遠不會去查找原型,這個函數是?


對JSON的了解?


[].forEach.call($$("*"),function(a){a.style.outline="1pxsolid#"+(~~(Math.random()*(1<<24))).toString(16)})能解釋一下這段代碼的意思嗎?


js延遲載入的方式有哪些?


Ajax是什麼?如何創建一個Ajax?


同步和非同步的區別?


如何解決跨域問題?


頁面編碼和被請求的資源編碼如果不一致如何處理?


模塊化開發怎麼做?


AMD(Moles/Asynchronous-Definition)、CMD(CommonMoleDefinition)規范區別?


requireJS的核心原理是什麼?(如何動態載入的?如何避免多次載入的?如何緩存的?)


JS模塊載入器的輪子怎麼造,也就是如何實現一個模塊載入器?


談一談你對ECMAScript6的了解?


ECMAScript6怎麼寫class,為什麼會出現class這種東西?


非同步載入的方式有哪些?


documen.write和innerHTML的區別?


DOM操作——怎樣添加、移除、移動、復制、創建和查找節點?


.call()和.apply()的作用和區別?


數組和對象有哪些原生方法,列舉一下?


JS怎麼實現一個類。怎麼實例化這個類


JavaScript中的作用域與變數聲明提升?


如何編寫高性能的Javascript?


那些操作會造成內存泄漏?


JQuery的源碼看過嗎?能不能簡單概況一下它的實現原理?


jQuery.fn的init方法返回的this指的是什麼對象?為什麼要返回this?


jquery中如何將數組轉化為json字元串,然後再轉化回來?


jQuery的屬性拷貝(extend)的實現原理是什麼,如何實現深拷貝?


jquery.extend與jquery.fn.extend的區別?


jQuery的隊列是如何實現的?隊列可以用在哪些地方?


談一下Jquery中的bind(),live(),delegate(),on()的區別?


JQuery一個對象可以同時綁定多個事件,這是如何實現的?


是否知道自定義事件。jQuery里的fire函數是什麼意思,什麼時候用?


jQuery是通過哪個方法和Sizzle選擇器結合的?(jQuery.fn.find()進入Sizzle)


針對jQuery性能的優化方法?


Jquery與jQueryUI有啥區別?


JQuery的源碼看過嗎?能不能簡單說一下它的實現原理?


jquery中如何將數組轉化為json字元串,然後再轉化回來?


jQuery和Zepto的區別?各自的使用場景?


針對jQuery的優化方法?


Zepto的點透問題如何解決?


jQueryUI如何自定義組件?


需求:實現一個頁面操作不會整頁刷新的網站,並且能在瀏覽器前進、後退時正確響應。給出你的技術實現方案?


如何判斷當前腳本運行在瀏覽器還是node環境中?(阿里)


移動端最小觸控區域是多大?


jQuery的slideUp動畫,如果目標元素是被外部事件驅動,當滑鼠快速地連續觸發外部元素事件,動畫會滯後的反復執行,該如何處理呢?


把Script標簽放在頁面的最底部的body封閉之前和封閉之後有什麼區別?瀏覽器會如何解析它們?


移動端的點擊事件的有延遲,時間是多久,為什麼會有?怎麼解決這個延時?(click有300ms延遲,為了實現safari的雙擊事件的設計,瀏覽器要知道你是不是要雙擊操作。)


知道各種JS框架(Angular,Backbone,Ember,React,Meteor,Knockout...)么?能講出他們各自的優點和缺點么?


Underscore對哪些JS原生對象進行了擴展以及提供了哪些好用的函數方法?


解釋JavaScript中的作用域與變數聲明提升?


那些操作會造成內存泄漏?


JQuery一個對象可以同時綁定多個事件,這是如何實現的?


Node.js的適用場景?


(如果會用node)知道route,middleware,cluster,nodemon,pm2,server-siderendering么?


解釋一下Backbone的MVC實現方式?


什麼是「前端路由」?什麼時候適合使用「前端路由」?「前端路由」有哪些優點和缺點?


知道什麼是webkit么?知道怎麼用瀏覽器的各種工具來調試和debug代碼么?


如何測試前端代碼么?知道BDD,TDD,UnitTest么?知道怎麼測試你的前端工程么(mocha,sinon,jasmin,qUnit..)?


前端templating(Mustache,underscore,handlebars)是幹嘛的,怎麼用?


簡述一下Handlebars的基本用法?


簡述一下Handlerbars的對模板的基本處理流程,如何編譯的?如何緩存的?


用js實現千位分隔符?(提示:正則+replace)


檢測瀏覽器版本版本有哪些方式?


WhatisaPolyfill?


做的項目中,有沒有用過或自己實現一些polyfill方案(兼容性處理方案)?


我們給一個dom同時綁定兩個點擊事件,一個用捕獲,一個用冒泡。會執行幾次事件,會先執行冒泡還是捕獲?


使用JS實現獲取文件擴展名?


答案自己先慢慢找哈。

D. 面試網路維護工程師會被問到哪些問題

-物理層

物理層定義了設備介面上的一些電子電氣化的標准,比如RJ45介面,光纖介面。傳輸介質雙絞線,無線,光,電。等

--數據鏈路層

二層定義了一個重要的表示,MAC地址,准確的說他必須在一個LAN內是唯一的。他又48位的十六進制組成,前24位是廠商表示,後24位 是廠商自定義的序列號。有時候 MAC地址就是表示了一個設備的位置。

--網路層

網路層是用來邏輯上選路定址的,這一層最重要的一個協議就是IP協議。基於ip 又分為 ARP,RARP,ICMP,IGMP等

--傳輸層

這一層定義類了 兩個重要的協議 TCP和UDP 。還有就是埠號的概念。這一層關聯的是一個主機上的某個程序或者是服務。比如 tcp 80 的web服務 udp 4000的QQ 程序等。

--會話層

主要作用是建立會話和管理會話。我一般這樣理解 會話的 比如 telnet 一台主機,是一次會話的鏈接。打開網路的網頁,就和網路的伺服器建立了一次會話。

--表示層

因為底層傳輸的是二進制,應用層無法直接識別。所以根據這一層的名字可以直接理解為他是一個翻譯。比如把一長串的數據「翻譯」成rmvb格式,交給上層的 快播 這個程序,把另一串數據「翻譯成」MP3格式交給 音樂播放器。其實這一層的工作很多。

壓縮,解壓縮,加密,解密等

--應用層

為用戶提供了一個可以操所的界面,如windows的桌面化或UNIX的字元界面。

OSI七層的每一層是獨立工作的,但是層與層之間是相互「合作」「兼容」的關系。

1.2 [三層交換和路由器的不同]

雖說三層交換機和路由器都可以工作在三層,但本質上還是有所區別。

一 在設計的功能上不同

現在有很多的多功能路由器,又能實現三層的路由功能,包括NAT地址轉換。有提供了二層的埠,有的還配置了無線功能。再有就是還具備防火牆的功能。但是你不能它單獨的劃分為交換機或者是防火牆吧。只能說是個多功能的路由器。防火牆二層交換只是他的附加功能。三層交換也一樣,主要功能還是解決區域網內數據頻繁的通信,三層功能也有,但不見得和路由器差很多。

二 應用的環境不同

三層交換的路由功能比較簡單,因為更多的把他應用到區域網內部的通信上,主要功能還是數據的交換

路由器的主要功能就是選路定址,更適合於不同網路之間,比如區域網和廣域網之間,或者是不同的協議之間。

三 實現方式不同

路由器能夠實現三層的路由(或轉發) 是基於軟體的實現方式,當收到一個數據包要轉發的時候,要經過查看路由表,最長匹配原則等一系列復雜的過程最終實現數據包的轉發,相比三層交換效率略低。而三層交換是基於硬體的方式實現三層的功能,他成功轉發一個數據包後,就會記錄相應的IP和MAC的對應關系,當數據再次轉發是根據之前的記錄的表項直接轉發。這個過程成為「一次路由,多次交換」。

總之,三層交換和路由器的最大區別是路由器可以基於埠做NAT,而三層交換機不能。路由器直接接入光纖可以直接上網,而三層交換機不能。主要是三層交換機的每一個介面都有專有的MAC地址和特定的ASIC集成電路。

.

1.3 [靜態路由和動態路由的區別]

靜態路由特點

靜態路由是管理員手工配置,精確。但是不夠靈活,是單向性的。考慮到靜態路由穩定,節省資源(內存,cpu,鏈路帶寬)。在網路TOP不是很大的環境中常用。

動態路由的特點

動態路由的好處就是路由器本身通過運行動態路由協議來互相學習路由條目,在大型的網路環境中,一定程度上減少了工程師的工作量。動態路由協議分為很多種,IGP和EGP,IGP中根據工作的原理分為鏈路狀態型和距離矢量型的。但是不管哪一種動態協議,他都要經過以下幾個過程。

1.「說話」 向其他的路由器發送路由信息

2.「收聽」 接收其他路由器發來的路由信息

3.「計算」不同的動態路由協議有不同的演算法,每種路由協議通過自己特有的演算法把收到的路由信息計算,得出最好的路由條目,載入到路由表中。

4.「維護」 維護路由表,當TOP發生變化的時候,及時的更新自己的路由表,並發送變更的消息

在生產環境下,應當更具不同的網路規模,選擇不同的路由協議。

1.4 [描述一下ACL和NAT]

ACL:acl訪問控制列表是用來制定規則的一種機制。他用來告訴路由器那些數據包訪問那些資源是允許的,那些是拒絕的。他可以分為兩種方式,一是標準的訪問控制列表,只能基於源地址進行限制。而是擴展的訪問控制列表,他不僅可以基於源地址和目標地址進行過濾,還可以根據埠來進行限制。ACL的工作原理就是讀取數據包的三層和四層,和訪問控制列表中的條目進行匹配,如有相符的,直接按照策略(允許或拒絕),不在往下匹配。如沒有匹配的條目則按照默認規則。

NAT:nat網路地址轉換,是為了解決ipv4地址空間不足產生的。

Nat的原理就是替換掉數據包中的源ip+埠或目標ip+埠,以達到私有地址不能再公網上傳播的這種情況,或者是區域網中伺服器的發布。Nat一定程度上提高了區域網用戶的安全性。

實現方式大概可以分成 靜態NAT,動態NAT PAT(埠復用)

1.5 [描述一下VLAN]

VLAN 是為了避免二層出現廣播風暴給大面積用戶帶來影響,所採取的一種手段。

Vlan 帶來的好處

減少廣播風暴

提高一定的安全

簡化網路的管理,有易於故障排查

Vlan 是把區域網進行邏輯上的分割,實現方式有兩種

1.靜態vlan 基於埠的vlan (常用)

2.基於MAC地址的vlan (適合於移動用戶)

Vlan之間的通信需要配置TRUNK鏈路(中繼) 封裝模式有兩種

Isl 思科私有的技術,在數據幀的頭部和尾部添加30位元組的標示符

Dot1q 通過 在mac地址後面打標記的方式 標識vlan 共4個位元組 公有協議

1.6 [RIP和OSPF的區別]

兩者都屬於IGP協議,rip是典型的距離矢量動態路由協議。Ospf是鏈路狀態型的協議

Rip是整張路由表進行廣播更新(v2是組播),學習未知的路由條目,有存在環路的情況

並且沒有鄰居表,網路收斂速度比較慢。因為有環路的缺陷,不適合較大的網路使用。

Ospf組播更新,並且只有TOP發生變化的時候才出發更新,把收到更新的路由會放置在LSDB中,並生成路由。Ospf本身沒有環路的產生,並且是有分層的結構,而rip是平面的沒有層次化。所以ospf比rip收斂速度快。在NBMA網路中還會有DR和BDR的概念,促進了ospf的收斂。

Rip 管理距離 120 ospf 管理距離 110

1.7 [解釋以下術語的意思]

LAN 本地區域網

WAN 廣域網

VLAN 虛擬區域網

WLAN 無線區域網

VPN 虛擬專用網

AD 管理距離,用來衡量不同路由協議生成去往同一目標的可信值

Metric 度量值,用來判斷同一種路由協議生成去往同一目標的優先順序

1.8 [簡述一下stp是什麼]

Stp 生成樹協議。

一個良好的網路應該要考慮到鏈路的冗餘,比如二層的交換機做冗餘,來防範單點故障帶來的問題。但是二層做冗餘的話會帶來一些問題:

1.廣播風暴,因為二層對未知數據幀的處理是進行廣播,而且二層的封裝結構又不像三層那樣有TTL 的機制來防護。所以一旦廣播風暴產生,其他的交換機就會跟著廣播,造成鏈路的堵塞癱瘓。

2.MAC地址的重復。因為二層的工作原理,會造成交換機對一個MAC的多次重復的去學習,造成不必要的資源浪費,直到設備癱瘓

3.MAC地址表的不穩定,因為要重復去學習一些地址。造成轉發效率緩慢。

二層環路帶來的後果是嚴重的 ,stp協議就是在冗餘的環境下,邏輯上去DOWN掉一個借口,打破環路的產生,同時做到冗餘。當環境變化時,會自動跳轉down的介面。

1.9 [STP計算的過程]

1.選擇根網橋

2.選擇根埠

3.選擇指定埠

4.指定阻塞埠

2.0 [描述一下HSRP]

熱備路由協議 是Cisco私有的網關冗餘協議。它是由一組路由器(最低2台)構成的一個熱備組 作用是為用戶提供一個不間斷的網關ip,用戶通過這個ip訪問互聯網,即使真實的網關設備DOWN掉一台,也不會影響客戶的正常工作。

原理: 熱備組中包含4中路由器的角色,

活躍路由器:負責承載發往虛擬ip地址的流量,是真正轉發用戶數據流量的路由器,

同時向UDP1985發送hello包 表明自己的狀態,一個組中只有一台

備份路由器:監聽整個HSRP組的狀態,是成為下一個活躍路由器之前的狀態,一個組中只有一個 同時向組中發送

其他路由器:靜聽整個HSRP組的狀態,是備份路由器的候選者

虛擬路由器:為客戶端提供一個虛擬的ip和MAC 能夠然活躍路由器轉發。

當活躍路由器Down後 備份路由器收不到hello包 就會成為活躍路由器。而這個轉換的過程用戶是感覺不到的。

E. 一份超全的Web前端工程師面試題!收藏~

今天小編為大家准備了一份超全的Web前端工程師面試題,准備換工作參加Web前端工程師面試的小夥伴們快來和小編一起看一看這些題目吧,希望能夠對你的面試有所幫助!

一、HTML


§Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?


§HTML5為什麼只需要寫?


§行內元素有哪些?塊級元素有哪些?空(void)元素有那些?


§頁面導入樣式時,使用link和@import有什麼區別?


§介紹一下你對瀏覽器內核的理解?


§常見的瀏覽器內核有哪些?


§html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分HTML和HTML5?


§簡述一下你對HTML語義化的理解?


§HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?


§瀏覽器是怎麼對HTML5的離線儲存資源進行管理和載入的呢?


§請描述一下cookies,sessionStorage和localStorage的區別?


§iframe有那些缺點?


§Label的作用是什麼?是怎麼用的?(加for或包裹)


§HTML5的form如何關閉自動完成功能?


§如何實現瀏覽器內多個標簽頁之間的通信?(阿里)


§webSocket如何兼容低瀏覽器?(阿里)


§頁面可見性(PageVisibility)API可以有哪些用途?


§如何在頁面上實現一個圓形的可點擊區域?


§實現不使用border畫出1px高的線,在不同瀏覽器的Quirksmode和CSSCompat模式下都能保持同一效果。


§網頁驗證碼是幹嘛的,是為了解決什麼安全問題?


§tite與h1的區別、b與strong的區別、i與em的區別?


二、CSS


§介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?


§CSS選擇符有哪些?哪些屬性可以繼承?


§CSS優先順序演算法如何計算?


§CSS3新增偽類有那些?


§如何居中div?如何居中一個浮動元素?如何讓絕對定位的div居中?


§display有哪些值?說明他們的作用。


§position的值relative和absolute定位原點是?


§CSS3有哪些新特性?


§請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?


§用純CSS創建一個三角形的原理是什麼?


§一個滿屏品字布局如何設計?


§常見兼容性問題?


§li與li之間有看不見的空白間隔是什麼原因引起的?有什麼解決辦法?


§經常遇到的瀏覽器的兼容性有哪些?原因,解決方法是什麼,常用hack的技巧?


§為什麼要初始化CSS樣式。


§absolute的containingblock計算方式跟正常流有什麼不同?


§CSS里的visibility屬性有個collapse屬性值是幹嘛用的?在不同瀏覽器下以後什麼區別?


§position跟display、margincollapse、overflow、float這些特性相互疊加後會怎麼樣?


§對BFC規范(塊級格式化上下文:blockformattingcontext)的理解?


§CSS權重優先順序是如何計算的?


§請解釋一下為什麼會出現浮動和什麼時候需要清除浮動?清除浮動的方式


§移動端的布局用過媒體查詢嗎?


§使用CSS預處理器嗎?喜歡那個?


§CSS優化、提高性能的方法有哪些?


§瀏覽器是怎樣解析CSS選擇器的?


§在網頁中的應該使用奇數還是偶數的字體?為什麼呢?


§margin和padding分別適合什麼場景使用?


§抽離樣式模塊怎麼寫,說出思路,有無實踐經驗?[阿里航旅的面試題]


§元素豎向的百分比設定是相對於容器的高度嗎?


§全屏滾動的原理是什麼?用到了CSS的那些屬性?


§什麼是響應式設計?響應式設計的基本原理是什麼?如何兼容低版本的IE?


§視差滾動效果,如何給每頁做不同的動畫?(回到頂部,向下滑動要再次出現,和只出現一次分別怎麼做?)


§::before和:after中雙冒號和單冒號有什麼區別?解釋一下這2個偽元素的作用。


§如何修改chrome記住密碼後自動填充表單的黃色背景?


§你對line-height是如何理解的?


§設置元素浮動後,該元素的display值是多少?(自動變成display:block)


§怎麼讓Chrome支持小於12px的文字?


§讓頁面里的字體變清晰,變細用CSS怎麼做?(-webkit-font-smoothing:antialiased;)


§font-style屬性可以讓它賦值為「oblique」oblique是什麼意思?


§position:fixed;在android下無效怎麼處理?


§如果需要手動寫動畫,你認為最小時間間隔是多久,為什麼?(阿里)


§display:inline-block什麼時候會顯示間隙?(攜程)


§overflow:scroll時不能平滑滾動的問題怎麼處理?


§有一個高度自適應的div,裡面有兩個div,一個高度100px,希望另一個填滿剩下的高度。


§png、jpg、gif這些圖片格式解釋一下,分別什麼時候用。有沒有了解過webp?


§什麼是Cookie隔離?(或者說:請求資源的時候不要讓它帶cookie怎麼做)


§style標簽寫在body後與body前有什麼區別?


三、JavaScript


§介紹JavaScript的基本數據類型。


§說說寫JavaScript的基本規范?


§JavaScript原型,原型鏈?有什麼特點?


§JavaScript有幾種類型的值?(堆:原始數據類型和棧:引用數據類型),你能畫一下他們的內存圖嗎?


§Javascript如何實現繼承?


§Javascript創建對象的幾種方式?


§Javascript作用鏈域?


§談談This對象的理解。


§eval是做什麼的?


§什麼是window對象?什麼是document對象?


§null,undefined的區別?


§寫一個通用的事件偵聽器函數(機試題)。


§[「1」,「2」,「3」].map(parseInt)答案是多少?


§關於事件,IE與火狐的事件機制有什麼區別?如何阻止冒泡?


§什麼是閉包(closure),為什麼要用它?


§javascript代碼中的」usestrict」;是什麼意思?使用它區別是什麼?


§如何判斷一個對象是否屬於某個類?


§new操作符具體幹了什麼呢?


§用原生JavaScript的實現過什麼功能嗎?


§Javascript中,有一個函數,執行時對象查找時,永遠不會去查找原型,這個函數是?


§對JSON的了解?


§[].forEach.call($$("*"),function(a){a.style.outline="1pxsolid
#"+(~~(Math.random()*(1<<24))).toString(16)})能解釋一下這段代碼的意思嗎?


§js延遲載入的方式有哪些?


§Ajax是什麼?如何創建一個Ajax?


§同步和非同步的區別?


§如何解決跨域問題?


§頁面編碼和被請求的資源編碼如果不一致如何處理?


§模塊化開發怎麼做?


§AMD(Moles/Asynchronous-Definition)、CMD(CommonMole
Definition)規范區別?


§requireJS的核心原理是什麼?(如何動態載入的?如何避免多次載入的?如何緩存的?)


§讓你自己設計實現一個requireJS,你會怎麼做?


§談一談你對ECMAScript6的了解?


§ECMAScript6怎麼寫class么,為什麼會出現class這種東西?


§非同步載入的方式有哪些?


§documen.write和innerHTML的區別?


§DOM操作——怎樣添加、移除、移動、復制、創建和查找節點?


§.call()和.apply()的含義和區別?


§數組和對象有哪些原生方法,列舉一下?


§JS怎麼實現一個類。怎麼實例化這個類


§JavaScript中的作用域與變數聲明提升?


§如何編寫高性能的Javascript?


§那些操作會造成內存泄漏?


§JQuery的源碼看過嗎?能不能簡單概況一下它的實現原理?


§jQuery.fn的init方法返回的this指的是什麼對象?為什麼要返回this?


§jquery中如何將數組轉化為json字元串,然後再轉化回來?


§jQuery的屬性拷貝(extend)的實現原理是什麼,如何實現深拷貝?


§jquery.extend與jquery.fn.extend的區別?


§jQuery的隊列是如何實現的?隊列可以用在哪些地方?


§談一下Jquery中的bind(),live(),delegate(),on()的區別?


§JQuery一個對象可以同時綁定多個事件,這是如何實現的?


§是否知道自定義事件。jQuery里的fire函數是什麼意思,什麼時候用?


§jQuery是通過哪個方法和Sizzle選擇器結合的?(jQuery.fn.find()進入Sizzle)


§針對jQuery性能的優化方法?


§Jquery與jQueryUI有啥區別?


§JQuery的源碼看過嗎?能不能簡單說一下它的實現原理?


§jquery中如何將數組轉化為json字元串,然後再轉化回來?


§jQuery和Zepto的區別?各自的使用場景?


§針對jQuery的優化方法?


§Zepto的點透問題如何解決?


§jQueryUI如何自定義組件?


§需求:實現一個頁面操作不會整頁刷新的網站,並且能在瀏覽器前進、後退時正確響應。給出你的技術實現方案?


§如何判斷當前腳本運行在瀏覽器還是node環境中?(阿里)


§移動端最小觸控區域是多大?


§jQuery的slideUp動畫,如果目標元素是被外部事件驅動,當滑鼠快速地連續觸發外部元素事件,
動畫會滯後的反復執行,該如何處理呢?


§把Script標簽放在頁面的最底部的body封閉之前和封閉之後有什麼區別?瀏覽器會如何解析它們?


§移動端的點擊事件的有延遲,時間是多久,為什麼會有?怎麼解決這個延時?(click有300ms
延遲,為了實現safari的雙擊事件的設計,瀏覽器要知道你是不是要雙擊操作。)


§知道各種JS框架(Angular,Backbone,Ember,React,Meteor,Knockout)么?
能講出他們各自的優點和缺點么?


§Underscore對哪些JS原生對象進行了擴展以及提供了哪些好用的函數方法?


§解釋JavaScript中的作用域與變數聲明提升?


§那些操作會造成內存泄漏?


§JQuery一個對象可以同時綁定多個事件,這是如何實現的?


§Node.js的適用場景?


§(如果會用node)知道route,middleware,cluster,nodemon,pm2,server-side
rendering么?


§解釋一下Backbone的MVC實現方式?


§什麼是「前端路由」?什麼時候適合使用「前端路由」?「前端路由」有哪些優點和缺點?


§知道什麼是webkit么?知道怎麼用瀏覽器的各種工具來調試和debug代碼么?


§如何測試前端代碼么?知道BDD,TDD,UnitTest么?知道怎麼測試你的前端工程么(mocha,sinon,jasmin,
qUnit..)?


§前端templating(Mustache,underscore,handlebars)是幹嘛的,怎麼用?


§簡述一下Handlebars的基本用法?


§簡述一下Handlerbars的對模板的基本處理流程,如何編譯的?如何緩存的?


§用js實現千位分隔符?(來源:前端農民工,提示:正則+replace)


§檢測瀏覽器版本版本有哪些方式?


§我們給一個dom同時綁定兩個點擊事件,一個用捕獲,一個用冒泡,你來說下會執行幾次事件,然後會先執行冒泡還是捕獲。


四、其他問題


§原來公司工作流程是怎麼樣的,如何與其他人協作的?如何誇部門合作的?


§你遇到過比較難的技術問題是?你是如何解決的?


§設計模式知道什麼是singleton,factory,strategy,decrator么?


§常使用的庫有哪些?常用的前端開發工具?開發過什麼應用或組件?


§頁面重構怎麼操作?


§列舉IE與其他瀏覽器不一樣的特性?


§99%的網站都需要被重構是那本書上寫的?


§什麼叫優雅降級和漸進增強?


§是否了解公鑰加密和私鑰加密。


§WEB應用從伺服器主動推送Data到客戶端有那些方式?


§對Node的優點和缺點提出了自己的看法?


§你有用過哪些前端性能優化的方法?


§http狀態碼有那些?分別代表是什麼意思?


§一個頁面從輸入URL到頁面載入顯示完成,這個過程中都發生了什麼?(流程說的越詳細越好)


§部分地區用戶反應網站很卡,請問有哪些可能性的原因,以及解決方法?


§從打開app到刷新出內容,整個過程中都發生了什麼,如果感覺慢,怎麼定位問題,怎麼解決?


§除了前端以外還了解什麼其它技術么?你最最厲害的技能是什麼?


§你用的得心應手用的熟練地編輯器&開發環境是什麼樣子?


§對前端界面工程師這個職位是怎麼樣理解的?它的前景會怎麼樣?


§你怎麼看待WebApp、hybridApp、NativeApp?


§你移動端前端開發的理解?(和Web前端開發的主要區別是什麼?)


§你對加班的看法?


§平時如何管理你的項目?


§說說最近最流行的一些東西吧?常去哪些網站?


§如何設計突發大規模並發架構?


§說說最近最流行的一些東西吧?常去哪些網站?


§是否了解開源的工具bower、npm、yeoman、grunt、gulp,一個npm的包里的package.json
具備的必要的欄位都有哪些?(名稱、版本號,依賴)


§每個模塊的代碼結構都應該比較簡單,且每個模塊之間的關系也應該非常清晰,隨著功能和迭代次數越來越多,你會如何去保持這個狀態的?


§Git知道branch,diff,merge么?


§如何設計突發大規模並發架構?


§當團隊人手不足,把功能代碼寫完已經需要加班的情況下,你會做前端代碼的測試嗎?


§說說最近最流行的一些東西吧?平時常去哪些網站?


§知道什麼是SEO並且怎麼優化么?知道各種metadata的含義么?


§移動端(AndroidIOS)怎麼做好用戶體驗?


§簡單描述一下你做過的移動APP項目研發流程?


§你在現在的團隊處於什麼樣的角色,起到了什麼明顯的作用?


§你認為怎樣才是全端工程師(FullStackdeveloper)?


§介紹一個你最得意的作品吧?


§你有自己的技術博客嗎,用了哪些技術?


§對前端安全有什麼看法?


§是否了解Web注入攻擊,說下原理,最常見的兩種攻擊(XSS和CSRF)了解到什麼程度?


§項目中遇到國哪些印象深刻的技術難題,具體是什麼問題,怎麼解決?。


§最近在學什麼東西?


§你的優點是什麼?缺點是什麼?


§如何管理前端團隊?


§最近在學什麼?能談談你未來3,5年給自己的規劃嗎?


§
以上就是小編今天為大家分享的關於web前端工程師面試題的文章,希望本篇文章能夠對正准備學習編程技術的小夥伴們有所幫助。想要了解更多web前端相關知識記得關注北大青鳥web前端培訓官網哦!最後希望小夥伴們能夠好好准備這些問題的答案,在面試中取得好成績,成為一名優秀的web前端工程師!


§

F. 四川移動網路維護工程師面試會問些什麼問題啊

我是也是學計算機方面的~當然主要是網站面的。我朋友應該是和你一樣學的網路安全維護這些的~~
我想的是面試應該都是差不多的。要是你才學校畢業~我想很多東西就不能說的太真實了也不能太假了··比如問你路由配置~~~比如哈···你可以講講一些基本的知識。當然在這個裡面結合一些專業術語什麼的·~和你沒有學的但是知道的地方也加起來吹吹。
現在的單位都是那樣的。看看學歷。看看你說的出口不能不能講出來。就是這樣的···我朋友學網路的。叫干什麼沒什麼問題。面試三次不過·、問他講不出來··我以前一起在一個公司面試我過了他還是沒過。我懂的東西還沒我朋友多。錄取原因很簡單。我說很多東西。當然和我們學的有些都沒有多大的關系。只是有聯系在裡面的。我都講講,前後依照分析的方式表現出來~~~
去的時候心情上是不需要緊張的·往往緊張的都是表現不出很 好的東西來的·
我想你多應該看看的是黑方面的相關資料的。、自己會和不會那到是沒什麼~用是基本上用不上的。但是學網路的拿這個東西出去忽悠人。只要你發揮好。我感說是誰面試誰取你·
移動這樣的公司你才進去的人是不需要你維護安全的··基本上都是些小問題在解決的~~但是你聯系他們的要求搭配這些講下來效果就不一樣了哦~~~~~

祝福你好運~~~

G. 一般網路工程師面試都會考什麼樣的問題

一 請簡述網路定義,並談談自己對網路的理解
二 請描述osi七層模型,並簡要概括各層功能
三 請描述tcp/ip模型,並簡要介紹各層功能
四 請簡要敘述交換機和集線器的區別
五 請說出自己配置過的路由器型號,並說出幾個最常用的配置命令
六 請說出幾種動態路由協議,並談談動態路由和靜態路由的區別
七 win2000中為何要引入域的概念
八 復制和剪切操作對文件許可權會產生什麼影響
九 請介紹幾種方式用來在web伺服器上創建虛擬主機
十 請簡要介紹NNTP伺服器中虛擬目錄的作用
十一 請介紹幾種你所使用過的代理伺服器
十二 請提供幾種郵件伺服器的建設方案
十三 請描述Exchange5.5和Exchange2000的區別
十四 說出你所使用過的資料庫產品
十五 你認為SQL2000資料庫中最難的部分是什麼,為什麼?
十六 介紹你所使用過的網管軟體,以及它的特點
十七 win2000中的dns伺服器新增了哪些功能
十八 dhcp伺服器的作用是什麼?你可以提供哪些dhcp伺服器的建設方案
十九 dns和wins伺服器的區別有哪些?
二十 你認為網路工程師最重要的能力是什麼?
二十一如果你負責將一個公司的所有計算機接入互聯網,你會選擇哪種接入方式,為什麼?
二十二 如果你面臨的用戶對計算機都不熟悉,你將如何開展工作?
二十三 你會選擇讓哪種操作系統裝在公司內的計算機上,為什麼?
二十四 常用的備份方式有哪些?
二十五 你用過哪些操作系統,簡述一下它們的特點?
二十六 將來在公司建設企業內部網時,你會選擇哪種網路?
二十七 你用過哪種型號的路由器?
二十八說說交換機和集線器的區別,你會在企業內部網中選擇哪種交換機產品?
二十九 簡要介紹你所管理過的網路
三十 談談你認為網路中最容易出現的故障有哪些?

H. hr如何面試web前端工程師,該問哪些技術問題

近來幾個月,一直在努力尋找前端戰友,未果,一路的招聘經歷下來,心生不少感慨, 一直都很小心翼翼的,怕錯失了高人,又更加怕失誤把關不夠招到不合格的同學進來公司,對公司對項目造成某些影響。
面試前端工程師對我來說是一件非常有意思的事,因為面試過程很大程度上也是自我提升的過程。無論大公司還是小公司,之所以在如何招聘到真正有能力的 前端工程師方面會遇到同樣的問題,就是因為負責招聘的那些人不知道自己公司需要什麼樣的人,結果問問題時也問不到點子上。經過這幾年在行業里的摸索,我總 結出了自己的一套很有效的面試前端工程的方法。
有的應聘者說我不好對付,但留給他們這樣的印象也並非我所願。我覺得之所以他們說我不好對付,主要是因為我問他們問題時問得太細了。以前我曾專門寫過一些 東西,告訴應聘者怎麼才能通過我的面試(Surviving an interview with me)以及優秀的前面工程師應該具備什麼樣的素質(What makes a good front end engineer?),而我的面試可以說完全是按照那兩篇文章的標准進行的。我不會問一些特別偏門的問題,也不認為出幾道邏輯題就能考出人的真實水平。我 唯一的想法就是確定你能否勝任我們要招的這個職位。為此,我需要簡單地考察如下幾個方面。
基本知識
我們生活在互聯網時代,你想知道的任何事情幾乎都能在15分鍾內找到相關信息。可是,能找到信息並不等於你會使用它。我認為所有前端工程師至少都應 該掌握某些基本的知識,才能有效地完成自己的工作。如果一遇到問題,就停下工作上網四處搜索解決方案,怎麼可能保證按期完成工作呢?聽聽,還有誰在說「我 不知道,但我可以上網搜到。」請這些同學把手舉起來,讓大家認識一下(immediately raises a flag for me.)。下面我列出一些基本的知識點,這些都是我認為一名前端工程師(無論工作年頭長短)在沒有任何外來幫助的情況應該知道的。
DOM結構——兩個節點之間可能存在哪些關系以及如何在節點之間任意移動。
DOM操作——怎樣添加、移除、移動、復制、創建和查找節點。
事件——怎樣使用事件以及IE和DOM事件模型之間存在哪些主要差別。
XMLHttpRequest——這是什麼、怎樣完整地執行一次GET請求、怎樣檢測錯誤。
嚴格模式與混雜模式——如何觸發這兩種模式,區分它們有何意義。
盒模型——外邊距、內邊距和邊框之間的關系,IE 8以下版本的瀏覽器中的盒模型有什麼不同。
塊級元素與行內元素——怎麼用CSS控制它們、它們怎樣影響周圍的元素以及你覺得應該如何定義它們的樣式。
浮動元素——怎麼使用它們、它們有什麼問題以及怎麼解決這些問題。
HTML與XHTML——二者有什麼區別,你覺得應該使用哪一個並說出理由。
JSON——它是什麼、為什麼應該使用它、到底該怎麼使用它,說出實現細節來。
重申一下,上述這些知識點都應該是你應該「想都不用想」的東西。我一開始問的所有問題都是想摸清你對所有這些領域知識的掌握程度。雖然上面列出的這些知識點並沒有面面俱到,但我覺得你至少應該掌握這些,才有可能跟我坐到一間辦公室里來。
少量提問
我非常贊同面試者問的問題越少越好。反復問應聘者各種問題既不公平,也很無聊。我在任何一次面試中,通常只問三個大問題,但每個問題又會涉及我所能想到的多個方面。回答每個大問題一般要經過幾個步驟,這樣我就可以在每個步驟中穿插著問一些小問題。比如說:

現在有一個正顯示著Yahoo!股票價格的頁面。頁面上有一個按鈕,你可以單擊它來刷新價格,但不會重新載入頁面。請你描述一下實現這個功能的過程,假設伺服器會負責准備好正確的股票價格數據。
這個問題牽扯到一組我想要考察的基本知識點:DOM結構、DOM操作、事件處理、XHR和JSON。如果我要求你對換一種處理股票價格的方式,或者 讓你在頁面中顯示其他信息,就可以把更多的知識點包括進來。對於經驗比較豐富應聘者,我也可以自如地擴展要考察的知識范圍,最簡單像JOSN與XML的區 別、安全問題、容量問題,等等。
我還希望應聘者給出的任何解決方案中都不要使用庫。我想看到最原生態的代碼,你就當頁面中沒有包含任何庫。你說你對哪個庫了解多少多少,但我不能把 關於庫的知識作為評判能力的因素,因為庫是會隨時間變化的。我需要的是真正理解庫背後的機制,特別是能夠徒手寫出一個自己的庫的人。
解決問題
做為一名前端工程師,最值得高興的事莫過於解決同一個問題會有很多種不同的方法,而你要做的就是找出最合適的方法來。我在提問的時候,經常會在應聘 者解釋完一種方法後問他們還有沒有第二種方法。此時我會跟他們說,假設你的這個方法由於種種原因被否決了,那麼你還能不能給出另一種方法。這樣做可以達到 兩個目的。
首先,可以測試出他們是否在毫無意義地復述書本中的東西。不能不承認,某些人確實有過目不忘的天賦,聽他們在那裡滔滔不絕地講,你會覺得他們什麼都 明白。可是,只要一跟這些人談到怎麼查找方案無效的原因,以及能否拿出一個新方案來,他們往往就傻眼了。這時候,如果我聽到「我不明白這個方案為什麼不夠 好」之類的反問,心裡立刻就明白我的問題已經超出了他們的能力范圍,而他們只是想拿自己死記硬背的結論來矇混過關。
其次,可以測試出他們已經掌握的(還是那句話,「想都不用想」)瀏覽器技術知識。如果他們對瀏覽器平台的核心知識有較好的理解,想出解決同一問題的不同方案根本沒有那麼難。
對一名前端工程師來說,這絕對是最重要的能力。前端工程師在工作中遇到本該如此卻並未如此的難題(說你啦,IE6),應該說是一件很平常的事。一個方案無效就無計可施的人,做不了前端工程師。
考核應聘者解決問題能力的另一層原因,與我的個人喜好有關。在搞清楚應聘者知道什麼不知道什麼之後,我就會想著問一個他們知識領域之外的問題。這樣 做的目的,就是想看看他們怎樣運用已有的知識解決新問題。在解決問題的每一步,我也准備了一些提示,以防有人會卡殼打艮(在我面前15分鍾一言不發,對我 評價這個人毫無幫助)。我真正感興趣的,是他們能夠從上一步前進到下一步。我希望看到一個人就在我眼前學到新知識。
注意:所有問題都與瀏覽器技術相關。我不相信出幾道抽象的邏輯題,就能夠考出某人解決Web技術問題的能力。在我看來,這無異於讓素描大師畫肖像(或者讓劉翔跟博爾特同場競技),沒有意義,也得不到任何有價值的信息。
有激情
要成為一名優秀的前端工程師,最重要的莫過於對自己做的事要有激情。我們技能都不是從學校中或者從研討會上學來的,因此前端工程師必須具備自學能 力。瀏覽器技術的變化可謂日新月異,所以也只有不斷提升自己的技能才做得到與時俱進。我雖然不能強迫誰必須多看博客、不斷學習,但想應聘前端工程師的人恐 怕還是必須這么做的。
你怎麼知道誰對這種工作有沒有激情?實際上非常簡單。我只問一個簡單的問題:「目前你對什麼Web技術最感興趣?」這個問題永遠不會過期,而且也幾 乎不可能出錯……除非你答不上來。就眼下來說,我希望你對這個問題給出的技術中包括WebSocket、HTML、WebGL、客戶端資料庫,等等。只有 對Web開發充滿激情的人,才會堅持不懈地學習新知識、掌握新技能;這些人才是我真正想要的。當然,我會讓他們詳細解釋自己提到的技術,以保證他們不是隨 口說了幾個時髦的新詞彙。
最後一點
計算機科學或者Web設計方面的知識當然也有用,但那都是基本知識之外的東西。只要基本知識在那兒了,一切就都有了基礎,想擴充知識面也不難。可 是,如果等到正式上班以後,還得從頭學習基本技能,那種難度是不可同日而語的。另外,高級前端工程師與一般工程師相比,肯定需要掌握更多的技能。而面試幾 乎沒有經驗大學畢業生,同樣也會有一套完全不同的程序。我在這篇文章里列出來的都是一些最基本的東西。
對於那些還沒有多少面試經驗的人,我總是喜歡告訴他們,面試完了只要問自己一個問題就行:你想以後跟這個人在一起共事嗎?如果不管為什麼,回答是不,那就是不。