當前位置:首頁 » 網頁前端 » 前端邏輯題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端邏輯題

發布時間: 2022-06-28 00:56:02

1. web前端邏輯思維

《簡單邏輯學》一本簡單 有點枯燥 但認可度非常高的書 或許對你有幫助~

2. 你遇到過哪些比較有水準的前端面試題

我原來面試工作時候,面試官出了一個這樣的題,題目是:我兒子叫你的兒子叫爸爸。當時我對於這個問題思考了很久。這個題目答案:是男問女的就是公公,女問女就是婆婆,男問男就是爸爸,女問男就是媽媽。這個題很好的考驗了面試者的邏輯思考能力,還有看待事物的全面性,非常不錯。

3. 邏輯不好適合學習web前端嗎

其實沒有必要擔心邏輯的問題,學習web前端並沒有想像中那麼難。

Web前端在開發領域來說,是屬於門檻比較低的,打個比方,我們的伺服器語言的學習是先慢後快,而Web端相反,先快後慢,也就是說,入門快,切入快,但後期要成為大佬則需要不斷的積累。

如果實在是擔心邏輯的問題,在學習web前端的過程中也是可以鍛煉的。比如,常見的邏輯思維能力的提高方法有:

通過思維導圖的方式來養成結構化的思維:

在構思程序業務流程或者准備做某件事的時候,養成習慣做思維導圖,逐漸養成結構化的思維。無論是用筆直接在本子上畫出來,還是使用電腦的思維導圖來列舉,都是一樣的。當你把需要做的事情都列舉出來,慢慢清晰流程,邏輯思維就逐漸有了!

通過平時練習,逼迫自己學會邏輯表述:除了平時寫代碼來練習業務邏輯思維之外,還可以利用邏輯題目練習自己的邏輯思維,通過分析問題,並學會回答表述,把邏輯思維能自然的表現出來。

4. 求web前端開發筆試題

騰訊WEB前端開發三輪面試經歷及面試題
【一面】~=110分鍾 2013/04/24 11:20 星期三
進門靜坐30分鍾做題。

填空題+大題+問答題
>>填空題
何時接觸電腦 何時接觸前端
運算符 字元串處理 延時 display position XMLHttpRequest 正則
Jquery綁定事件 cookie
>>大題
BOM瀏覽器信息
瀏覽器兼容性舉例
閉包作用與舉例
新聞ul列表,插入3個,獲取index
全文單詞首字母大寫
ajax過程
>>邏輯題
任何時間分針和時針夾角
文章單詞(字母)頻率出現最高
30分鍾等到車概率是70%,那10分鍾呢?
一個班學舞蹈的有75%,學唱歌的有85%,問同時學習舞蹈和唱歌的最多多少,最少多少?
兩個很大數的加法運算
>>我的提問
為什麼不問我框架
你覺得我哪些方面還有欠缺,覺得我如何
如果有望進入二面,什麼時候可以得到通知
>>完了之後一起下樓時
我說其他幾家公司的問題和騰訊的有比較大的區別,
區別是XXXXXX
然後他問我家在哪裡
然後說深圳還是比較適合我
我說但願還能見到你
他笑了笑

【二面】~=40分鍾 2013/04/25 14:00 星期四
面試時間是兩點鍾,兩點過幾分進入了面試官所在的包間。
進去之前樓下簽到的hr要我把一摞草稿紙帶到621房間的面試官,進門給他之後,他說那把大椅子是壞的,
要我往後坐一點(防止向前傾倒)。
開始的時候他沒怎麼說話,埋頭看著我的簡歷,於是我主動開始扯了幾句關於自己的介紹。也不知他聽到沒
有,等我說完,馬上又說:好吧,你先自我介紹下。(一臉黑線...)
期間問了我為什麼不打算考研,為什麼選擇前端,我做的最自豪的事情是什麼。
嘰哩吧啦一陣子後,他要我說說我的人生規劃和職業規劃(頗為蛋疼,這些問題不是應該HR面才會問的么
),我順著他的來,也比較xx的說了一番。
反向代理
輸入網址到出現頁面的過程(IP解析,DNS解析等)
頁面流量
堆棧
接著,問了我-1在計算機中怎麼表示,如何判斷數組A是否為數組B的子集。
然後是一個概率問題,假設長江以北有80W人,長江以南有20W人,A向B打電話算一個電話,如果打了
10W個電話,那麼長江以北打向長江以南的電話有多少個?
沒問太多問題,都是些基礎的,最後他問我有什麼問題。
>>我問了問
為什麼不問我前端的問題
如果通過二面,什麼時候可以給我回復
對我有什麼學習上的建議
面試官留言:「一把刀有刀鋒和刀背,刀鋒要磨銳利,但是刀背的鍛煉也要加強。」

【HR面】~=30分鍾 2013/04/27 20:00 星期六
進去先看上幾位面試官對我的評價,安靜時刻我跟她扯淡了幾句,緩和了下尷尬的氣氛。
然後她瞄了瞄我的簡歷,接著就問我考不考研,很明顯我的答案是不。然後她又問為什麼~
接著讓我說說自己最滿意的一件事和最不滿意的一件事,自己最大的缺點和最大的優點
扯了半天之後(此處略去20分鍾扯淡),又開始看我的簡歷,問了我項目中遇到哪些困難,我說了一個還未
解決的bug,她反問為什麼不解決,然後嘰哩吧啦了一陣子。
最後問我有沒有什麼問題。按慣例,問了問最早什麼時候給通知,然後問了問期間如果有不明白問題可以通過
什麼方式聯系她之類的。
整個過程還算順利。

HR告訴我五一之後可以查詢錄取狀態,求人品吧~

順便把在搜狐和網易的面試筆試經歷也說說吧~
>>搜狐
搜狐的太久了,記不太清楚了
那次只為攢經驗,是俺平生第一次參加公司面試。不過收獲還是有的~
時間太久了,也記不清了,沒有提交筆試題,但是還是要我去面試了。
問他有幾輪面試,告訴我因時間匆忙,只給一輪技術面,如果滿意直接HR。
大概問題記不太清。
雖然感覺答的還不錯,但是最後還是被刷了。
【技術面】~=60分鍾
-問了下我在團隊學了些什麼。
-然後就是很多「你是怎麼理解XX」。。
-XX中有 閉包,原型鏈, 框架結構等

>>網易
今天4.27,好像是3.26參加的面試,時間太久,也記得不是很清楚了。
我沒有把任何面試官當做正經的面試官,男的就是我的學長,女的就是我的學姐,僅此而已,所以每次交流都是平和的心態。
學長們(每次面我的都是個男的)時不時露出笑意,現場氣氛沒有那麼緊張。
【一面】 ~=30分鍾
閉包
IE6趨勢
框架
【二面】 ~=90分鍾
框架比較 jQuery prototype YUI
框架特點
css兼容性 IE6 bug
seaJS AMD CMD kissy
JS原型鏈 閉包
JS基礎細節
不讓談網路框架
【HR面】~=25分鍾
自我介紹
身邊人的評價
最不滿意的一件事情
規劃
為什麼不想考研
有什麼困難
薪資待遇
何時通知

5. 去面試前端開發時。遇到一個面試題,如圖,問,當滑鼠移入ul時,如何讓li不觸發事件

可以判斷event對象中的target屬性的nodeName是否為UL或者是其他邏輯判斷,再做相應處理,如果DOM結構並不是ul嵌套二級的ul的吧,那可以在一級菜單ul上監聽mouseleave事件,這個事件子元素並不觸發。如果還不行的話,建議貼一下DOM結構

6. 前端面試官常問的問題有哪些

1、重繪和重排的關系:

重繪不會引起重排,但重排一定會引起重繪,一個元素的重排通常會帶來一系列的反應,甚至觸發整個文檔的重排和重繪,性能代價是高昂的。

2、重繪的概念:

重繪是一個元素外觀的改變所觸發的瀏覽器行為,例如改變visibility、outline、背景色等屬性。瀏覽器會根據元素的新屬性重新繪制,使元素呈現新的外觀。由於瀏覽器的流布局,對渲染樹的計算通常只需要遍歷一次就可以完成。

但table及其內部元素除外,它可能需要多次計算才能確定好其在渲染樹中節點的屬性值,比同等元素要多花兩倍時間,這就是我們盡量避免使用table布局頁面的原因之一。

3、觸發重排的情況:

頁面渲染初始化時;瀏覽器窗口改變尺寸;元素尺寸改變時;元素位置改變時;元素內容改變時;添加或刪除可見的DOM元素時。

4、rex的缺點:

(1)一個組件所需要的數據,必須甶父組件傳過來,而不能像flux中直接從store取。

(2)當一個組件相關數據更新吋,即使父組件不需要用到這個組件,父組件還是會重新render,可能會有效率影響,或者需要寫復雜的shouldComponentUpdate進行判斷。

5、對MVC和MVVM的理解:

(1)mvc:View傳送指令到Controller Controller完成業務邏輯後,要求Model改變狀態Model將新的數據發送到View,用戶得到反饋所有通信都是單向的。Angular它採用雙向綁定(data-binding):View的變動,自動反映在ViewModel,反之亦然。組成部分Model、View、ViewModel

(2)View:UI界面ViewModel:它是View的抽象,負責View與Model之間信息轉換,將View的Command傳送到Model;Model:數據訪問層。

7. 前端面試題目難嗎 如何輕松面對前端面試

從以下五個方面做,可以輕松面對前端面試:
一、基本知識
DOM結構——兩個節點之間可能存在哪些關系以及如何在節點之間任意移動。
DOM操作——怎樣添加、移除、移動、復制、創建和查找節點。
事件——怎樣使用事件以及IE和DOM事件模型之間存在哪些主要差別。
XMLHttpRequest——這是什麼、怎樣完整地執行一次GET請求、怎樣檢測錯誤。
嚴格模式與混雜模式——如何觸發這兩種模式,區分它們有何意義。
盒模型——外邊距、內邊距和邊框之間的關系,IE8以下版本的瀏覽器中的盒模型有什麼不同。
塊級元素與行內元素——怎麼用CSS控制它們、它們怎樣影響周圍的元素以及你覺得應該如何定義它們的樣式。
浮動元素——怎麼使用它們、它們有什麼問題以及怎麼解決這些問題。
HTML與XHTML——二者有什麼區別,你覺得應該使用哪一個並說出理由。
JSON——它是什麼、為什麼應該使用它、到底該怎麼使用它,說出實現細節來。
二、少量提問
現在有一個正顯示著Yahoo!股票價格的頁面。頁面上有一個按鈕,你可以單擊它來刷新價格,但不會重新載入頁面。請你描述一下實現這個功能的過程,假設伺服器會負責准備好正確的股票價格數據。
這個問題牽扯到一組我想要考察的基本知識點:DOM結構、DOM操作、事件處理、XHR和JSON。如果我要求你對換一種處理股票價格的方式,或者 讓你在頁面中顯示其他信息,就可以把更多的知識點包括進來。對於經驗比較豐富應聘者,我也可以自如地擴展要考察的知識范圍,最簡單像JOSN與XML的區別、安全問題、容量問題等等。
我還希望應聘者給出的任何解決方案中都不要使用庫。我想看到最原生態的代碼,你就當頁面中沒有包含任何庫。你說你對哪個庫了解多少多少,但我不能把關於庫的知識作為評判能力的因素,因為庫是會隨時間變化的。
三、解決問題
做為一名前端工程師,最值得高興的事莫過於解決同一個問題會有很多種不同的方法,而你要做的就是找出最合適的方法來。我在提問的時候,經常會在應聘者解釋完一種方法後問他們還有沒有第二種方法。此時我會跟他們說,假設你的這個方法由於種種原因被否決了,那麼你還能不能給出另一種方法。這樣做可以達到 兩個目的。
首先,可以測試出他們是否在毫無意義地復述書本中的東西。不能不承認,某些人確實有過目不忘的天賦,聽他們在那裡滔滔不絕地講,你會覺得他們什麼都明白。可是,只要一跟這些人談到怎麼查找方案無效的原因,以及能否拿出一個新方案來,他們往往就傻眼了。這時候,如果我聽到「我不明白這個方案為什麼不夠 好」之類的反問,心裡立刻就明白我的問題已經超出了他們的能力范圍,而他們只是想拿自己死記硬背的結論來矇混過關。
其次,可以測試出他們已經掌握的(還是那句話,「想都不用想」)瀏覽器技術知識。如果他們對瀏覽器平台的核心知識有較好的理解,想出解決同一問題的不同方案根本沒有那麼難。
注意:所有問題都與瀏覽器技術相關。我不相信出幾道抽象的邏輯題,就能夠考出某人解決Web技術問題的能力。在我看來,這無異於讓素描大師畫肖像,沒有意義,也得不到任何有價值的信息。
四、有激情
要成為一名優秀的前端工程師,最重要的莫過於對自己做的事要有激情。我們技能都不是從學校中或者從研討會上學來的,因此前端工程師必須具備自學能力。瀏覽器技術的變化可謂日新月異,所以也只有不斷提升自己的技能才做得到與時俱進。我雖然不能強迫誰必須多看博客、不斷學習,但想應聘前端工程師的人恐怕還是必須這么做的。
你怎麼知道誰對這種工作有沒有激情?實際上非常簡單。我只問一個簡單的問題:「目前你對什麼Web技術最感興趣?」這個問題永遠不會過期,而且也幾乎不可能出錯……除非你答不上來。就眼下來說,我希望你對這個問題給出的技術中包括WebSocket、HTML、WebGL、客戶端資料庫,等等。只有 對Web開發充滿激情的人,才會堅持不懈地學習新知識、掌握新技能;
五、最後一點
計算機科學或者Web設計方面的知識當然也有用,但那都是基本知識之外的東西。只要基本知識在那兒了,一切就都有了基礎,想擴充知識面也不難。可是,如果等到正式上班以後,還得從頭學習基本技能,那種難度是不可同日而語的。

8. vue前端面試題有哪些呢

文章中給你列舉了部分的面試題,這些都是公司面試常遇到的,還有需要的還可以自己去查閱一下資料
1、active-class是哪個組件的屬性?嵌套路由怎麼定義?
答:vue-router模塊的router-link組件。
2、怎麼定義vue-router的動態路由?怎麼獲取傳過來的動態參數?
答:在router目錄下的index.js文件中,對path屬性加上/:id。 使用router對象的params.id
3、vue-router有哪幾種導航鉤子?
答:三種,一種是全局導航鉤子:router.beforeEach(to,from,next),作用:跳轉前進行判斷攔截。第二種:組件內的鉤子;第三種:單獨路由獨享組件
4、scss是什麼?安裝使用的步驟是?有哪幾大特性?
答:預處理css,把css當前函數編寫,定義變數,嵌套。 先裝css-loader、node-loader、sass-loader等載入器模塊,在webpack-base.config.js配置文件中加多一個拓展:extenstion,再加多一個模塊:mole裡面test、loader
4.1、scss是什麼?在vue.cli中的安裝使用步驟是?有哪幾大特性?
答:css的預編譯。
使用步驟:
第一步:用npm 下三個loader(sass-loader、css-loader、node-sass)
第二步:在build目錄找到webpack.base.config.js,在那個extends屬性中加一個拓展.scss
第三步:還是在同一個文件,配置一個mole屬性
第四步:然後在組件的style標簽加上lang屬性 ,例如:lang=」scss」
有哪幾大特性:
1、可以用變數,例如($變數名稱=值);
2、可以用混合器,例如()
3、可以嵌套
5、mint-ui是什麼?怎麼使用?說出至少三個組件使用方法?
答:基於vue的前端組件庫。npm安裝,然後import樣式和js,vue.use(mintUi)全局引入。在單個組件局部引入:import {Toast} from 『mint-ui』。組件一:Toast(『登錄成功』);組件二:mint-header;組件三:mint-swiper
6、v-model是什麼?怎麼使用? vue中標簽怎麼綁定事件?
答:可以實現雙向綁定,指令(v-class、v-for、v-if、v-show、v-on)。vue的model層的data屬性。綁定事件:<input @click=doLog() />
7、axios是什麼?怎麼使用?描述使用它實現登錄功能的流程?
答:請求後台資源的模塊。npm install axios -S裝好,然後發送的是跨域,需在配置文件中config/index.js進行設置。後台如果是Tp5則定義一個資源路由。js中使用import進來,然後.get或.post。返回在.then函數中如果成功,失敗則是在.catch函數中
8、axios+tp5進階中,調用axios.post(『api/user』)是進行的什麼操作?axios.put(『api/user/8′)呢?
答:跨域,添加用戶操作,更新操作。
9、什麼是RESTful API?怎麼使用?
答:是一個api的標准,無狀態請求。請求的路由地址是固定的,如果是tp5則先路由配置中把資源路由配置好。標准有:.post .put .delete
10、vuex是什麼?怎麼使用?哪種功能場景使用它?
答:vue框架中狀態管理。在main.js引入store,注入。新建了一個目錄store,….. export 。場景有:單頁應用中,組件之間的狀態。音樂播放、登錄狀態、加入購物車
11、mvvm框架是什麼?它和其它框架(jquery)的區別是什麼?哪些場景適合?
答:一個model+view+viewModel框架,數據模型model,viewModel連接兩個
區別:vue數據驅動,通過數據來顯示視圖層而不是節點操作。
場景:數據操作比較多的場景,更加便捷
12、自定義指令(v-check、v-focus)的方法有哪些?它有哪些鉤子函數?還有哪些鉤子函數參數?
答:全局定義指令:在vue對象的directive方法裡面有兩個參數,一個是指令名稱,另外一個是函數。組件內定義指令:directives
鉤子函數:bind(綁定事件觸發)、inserted(節點插入的時候觸發)、update(組件內相關更新)
鉤子函數參數:el、binding
13、說出至少4種vue當中的指令和它的用法?
答:v-if:判斷是否隱藏;v-for:數據循環出來;v-bind:class:綁定一個屬性;v-model:實現雙向綁定
14、vue-router是什麼?它有哪些組件?
答:vue用來寫路由一個插件。router-link、router-view
15、導航鉤子有哪些?它們有哪些參數?
答:導航鉤子有:a/全局鉤子和組件內獨享的鉤子。b/beforeRouteEnter、afterEnter、beforeRouterUpdate、beforeRouteLeave
參數:有to(去的那個路由)、from(離開的路由)、next(一定要用這個函數才能去到下一個路由,如果不用就攔截)最常用就這幾種
16、Vue的雙向數據綁定原理是什麼?
答:vue.js 是採用數據劫持結合發布者-訂閱者模式的方式,通過Object.defineProperty()來劫持各個屬性的setter,getter,在數據變動時發布消息給訂閱者,觸發相應的監聽回調。
具體步驟:
第一步:需要observe的數據對象進行遞歸遍歷,包括子屬性對象的屬性,都加上 setter和getter
這樣的話,給這個對象的某個值賦值,就會觸發setter,那麼就能監聽到了數據變化
第二步:compile解析模板指令,將模板中的變數替換成數據,然後初始化渲染頁面視圖,並將每個指令對應的節點綁定更新函數,添加監聽數據的訂閱者,一旦數據有變動,收到通知,更新視圖
第三步:Watcher訂閱者是Observer和Compile之間通信的橋梁,主要做的事情是:
1、在自身實例化時往屬性訂閱器(dep)裡面添加自己
2、自身必須有一個update()方法
3、待屬性變動dep.notice()通知時,能調用自身的update()方法,並觸發Compile中綁定的回調,則功成身退。
第四步:MVVM作為數據綁定的入口,整合Observer、Compile和Watcher三者,通過Observer來監聽自己的model數據變化,通過Compile來解析編譯模板指令,最終利用Watcher搭起Observer和Compile之間的通信橋梁,達到數據變化 -> 視圖更新;視圖交互變化(input) -> 數據model變更的雙向綁定效果。
ps:16題答案同樣適合」vue data是怎麼實現的?」此面試題。
17、請詳細說下你對vue生命周期的理解?
答:總共分為8個階段創建前/後,載入前/後,更新前/後,銷毀前/後。
創建前/後: 在beforeCreated階段,vue實例的掛載元素$el和數據對象data都為undefined,還未初始化。在created階段,vue實例的數據對象data有了,$el還沒有。
載入前/後:在beforeMount階段,vue實例的$el和data都初始化了,但還是掛載之前為虛擬的dom節點,data.message還未替換。在mounted階段,vue實例掛載完成,data.message成功渲染。
更新前/後:當data變化時,會觸發beforeUpdate和updated方法。
銷毀前/後:在執行destroy方法後,對data的改變不會再觸發周期函數,說明此時vue實例已經解除了事件監聽以及和dom的綁定,但是dom結構依然存在
18、請說下封裝 vue 組件的過程?
答:首先,組件可以提升整個項目的開發效率。能夠把頁面抽象成多個相對獨立的模塊,解決了我們傳統項目開發:效率低、難維護、復用性等問題。
然後,使用Vue.extend方法創建一個組件,然後使用Vue.component方法注冊組件。子組件需要數據,可以在props中接受定義。而子組件修改好數據後,想把數據傳遞給父組件。可以採用emit方法。
19、你是怎麼認識vuex的?
答:vuex可以理解為一種開發模式或框架。比如PHP有thinkphp,java有spring等。
通過狀態(數據源)集中管理驅動組件的變化(好比spring的IOC容器對bean進行集中管理)。
應用級的狀態集中放在store中; 改變狀態的方式是提交mutations,這是個同步的事物; 非同步邏輯應該封裝在action中。
20、vue-loader是什麼?使用它的用途有哪些?
答:解析.vue文件的一個載入器,跟template/js/style轉換成js模塊。
用途:js可以寫es6、style樣式可以scss或less、template可以加jade等
21、請說出vue.cli項目中src目錄每個文件夾和文件的用法?
答:assets文件夾是放靜態資源;components是放組件;router是定義路由相關的配置;view視圖;app.vue是一個應用主組件;main.js是入口文件
22、vue.cli中怎樣使用自定義的組件?有遇到過哪些問題嗎?
答:第一步:在components目錄新建你的組件文件(smithButton.vue),script一定要export default {
第二步:在需要用的頁面(組件)中導入:import smithButton from 『../components/smithButton.vue』
第三步:注入到vue的子組件的components屬性上面,components:{smithButton}
第四步:在template視圖view中使用,<smith-button> </smith-button>
問題有:smithButton命名,使用的時候則smith-button。
23、聊聊你對Vue.js的template編譯的理解?
答:簡而言之,就是先轉化成AST樹,再得到的render函數返回VNode(Vue的虛擬DOM節點)
詳情步驟:
首先,通過compile編譯器把template編譯成AST語法樹(abstract syntax tree 即 源代碼的抽象語法結構的樹狀表現形式),compile是createCompiler的返回值,createCompiler是用以創建編譯器的。另外compile還負責合並option。
然後,AST會經過generate(將AST語法樹轉化成render funtion字元串的過程)得到render函數,render的返回值是VNode,VNode是Vue的虛擬DOM節點,裡面有(標簽名、子節點、文本等等)

9. 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設計方面的知識當然也有用,但那都是基本知識之外的東西。只要基本知識在那兒了,一切就都有了基礎,想擴充知識面也不難。可 是,如果等到正式上班以後,還得從頭學習基本技能,那種難度是不可同日而語的。另外,高級前端工程師與一般工程師相比,肯定需要掌握更多的技能。而面試幾 乎沒有經驗大學畢業生,同樣也會有一套完全不同的程序。我在這篇文章里列出來的都是一些最基本的東西。
對於那些還沒有多少面試經驗的人,我總是喜歡告訴他們,面試完了只要問自己一個問題就行:你想以後跟這個人在一起共事嗎?如果不管為什麼,回答是不,那就是不。

10. 各位大濕,請問有什麼題目或者是軟體可以測試思維邏輯的,我想測試以下自己適合做前端開發嗎

【1】假設有一個池塘,裡面有無窮多的水。現有2個空水壺,容積分別為5升和6升。問題是如何只用這2個水壺從池塘里取得3升的水。

答案:6升水壺a,5升水壺b
將a裝滿,倒入b中,然後倒空b,a中的水倒入b中,這樣兩次,然後b中有水2升,這時灌滿a,將a中水倒入b中,a中就有水3升

【2】 周雯的媽媽是水泥廠的化驗員。一天,周雯來到化驗室做作業。做完後想出去玩。「等等,媽媽還要考你一個題目。」她接著說,「你看這6隻做化驗用的玻璃杯, 前面3隻盛滿了水,後面3隻是空的。你能只移動1隻玻璃杯,就把盛滿水的杯子和空杯子間隔起來嗎?」愛動腦筋的周雯是學校里有名的「小機靈」,她只想了一 會兒就做到了。請你想想看,「小機靈」是怎樣做的?

答案:將第二個杯子里的水倒入第五個杯子

【3】三個小夥子同時愛上了一個姑娘,為了決定他們誰能娶這個姑娘,他們決定用手槍進 行一次決斗。小李的命中率是30%,小黃比他好些,命中率是 50%,最出色的槍手是小林,他從不失誤,命中率是100%。由於這個顯而易見的事實,為公平起見,他們決定按這樣的順序:小李先開槍,小黃第二,小林最 後。然後這樣循環,直到他們只剩下一個人。那麼這三個人中誰活下來的機會最大呢?他們都應該採取什麼樣的策略?

【4】一間囚房裡關押著兩個犯人。每天監獄都會為這間囚房提供一罐湯,讓這兩個犯人自己來分。起初,這兩個人經常會發生爭執,因為他們總是有人認為對方的湯比自己的多。後來他們找 到了一個兩全其美的辦法:一個人分湯,讓另一個人先選。於是爭端就這么解決了。可是,現在這間囚房裡又進來一個新犯人,現在是三個人來分湯。必須尋找一個 新的方法來維持他們之間的和平。該怎麼辦呢?

按:心理問題,不是邏輯問題

【5】在一張長方形的桌面上放了n個一樣大小的圓形硬幣。這些硬幣中可能有一些不完全在桌面內,也可能有一些彼此重疊;當再多放一個硬幣而它的圓心在桌面內時,新放的硬幣便必定與原先某些硬幣重疊。請證明整個桌面可以用4n個硬幣完全覆蓋。

【6】一個球、一把長度大約是球的直徑2/3長度的直尺,你怎樣測出球的半徑?方法很多,看看誰的比較巧妙。

【7】五個大小相同的一元人民幣硬幣。要求兩兩相接觸,應該怎麼擺?

【8】猜牌問題

S 先生、P先生、Q先生他們知道桌子的抽屜里有16張撲克牌:紅桃A、Q、4,黑桃J、8、 4、2、7、3,草花K、Q、5、4、6,方塊A、5。約翰教授從這16張牌中挑出一張牌來,並把這張牌的點數告訴P先生,把這張牌的花色告訴Q先生。這 時,約翰教授問P先生和Q先生:你們能從已知的點數或花色中推知這張牌是什麼牌嗎?於是,S先生聽到如下的對話:

P先生:我不知道這張牌。

Q先生:我知道你不知道這張牌。

P先生:現在我知道這張牌了。

Q先生:我也知道了。

聽罷以上的對話,S先生想了一想之後,就正確地推出這張牌是什麼牌。

請問:這張牌是什麼牌?

【9】一個教授邏輯學的教授,有三個學生,而且三個學生均非常聰明!

一天教授給他們出了一個題,教授在每個人腦門上貼了一張紙條並告訴他們,每個人的紙條上都寫了一個正整數,且某兩個數的和等於第三個!(每個人可以看見另兩個數,但看不見自己的)

教授問第一個學生:你能猜出自己的數嗎?回答:不能,問第二個,不能,第三個,不能,再問第一個,不能,第二個,不能,第三個:我猜出來了,是144!教授很滿意的笑了。請問您能猜出另外兩個人的數嗎?

【10】某城市發生了一起汽車撞人逃跑事件

該城市只有兩種顏色的車,藍色15%,綠色85%。

事發時有一個人在現場看見了

他指證是藍車

但是根據專家在現場分析,當時那種條件能看正確的可能性是80%

那麼,肇事的車是藍車的概率到底是多少?

【11】 有一人有240公斤水,他想運往乾旱地區賺錢。他每次最多攜帶60公斤,並且每前進一公里須耗水1公斤(均勻耗水)。假設水的價格在出發地為0,以後,與 運輸路程成正比, (即在10公里處為10元/公斤,在20公里處為20元/公斤......),又假設他必須安全返回,請問,他最多可賺多少錢?

【12】現在共有100匹馬跟100塊石頭,馬分3種,大型馬,中型馬跟小型馬。其中一匹大馬一次可以馱3塊石頭,中型馬可以馱2塊,而小型馬2頭可以馱一塊石頭。問需要多少匹大馬,中型馬跟小型馬?(問題的關鍵是剛好必須是用完100匹馬)

【13】1=5 2=15 3=215 4=2145 那麼5=?

答案:1

【14】有2n個人排隊進電影院,票價是50美分。在這2n個人當中,其中n個人只有50美分,另外n個人有1美元(紙票子)。愚蠢的電影院開始賣票時1分錢也沒有。

問:有多少種排隊方法使得每當一個擁有1美元的人買票時,電影院都有50美分找錢

註:1美元=100美分

擁有1美元的人,擁有的是紙幣,沒法破成2個50美分

【15】一個人花8塊錢買了一隻雞,9塊錢賣掉了,然後他覺得不劃算,花10塊錢又買回來了,11塊賣給另外一個人。問他賺了多少?

答案:2元

【16】有一種體育競賽共含M個項目,有運動員A,B,C參加,在每一項目中,第一,第二,第三名分別得X,Y,Z分,其中X,Y,Z為正整數且X>Y>Z。最後A得22分,B與C均得9分,B在百米賽中取得第一。求M的值,並問在跳高中誰得第二名。

【17】前提:

1、有五棟五種顏色的房子

2、每一位房子的主人國籍都不同

3、這五個人每人只喝一種飲料,只抽一種牌子的香煙,只養一種寵物

4、沒有人有相同的寵物,抽相同牌子的香煙,喝相同的飲料

提示:

1、英國人住在紅房子里

2、瑞典人養了一條狗

3、丹麥人喝茶

4、綠房子在白房子左邊

5、綠房子主人喝咖啡

6、抽PALL MALL煙的人養了一隻鳥

7、黃房子主人抽DUNHILL煙

8、住在中間那間房子的人喝牛奶

9、挪威人住第一間房子

10、抽混合煙的人住在養貓人的旁邊

11、養馬人住在抽DUNHILL煙的人旁邊

12、抽BLUEMASTER煙的人喝啤酒

13、德國人抽PRINCE煙

14、挪威人住在藍房子旁邊

15、抽混合煙的人的鄰居喝礦泉水

問題是:誰養魚?

答案:德國人養魚

【18】5個人來自不同地方,住不同房子,養不同動物,吸不同牌子香煙,喝不同飲料,喜歡不同食物。根據以下線索確定誰是養貓的人。

1.紅房子在藍房子的右邊,白房子的左邊(不一定緊鄰)

2.黃房子的主人來自香港,而且他的房子不在最左邊。

3.愛吃比薩的人住在愛喝礦泉水的人的隔壁。

4.來自北京的人愛喝茅台,住在來自上海的人的隔壁。

5.吸希爾頓香煙的人住在養馬人的右邊隔壁。

6.愛喝啤酒的人也愛吃雞。

7.綠房子的人養狗。

8.愛吃面條的人住在養蛇人的隔壁。

9.來自天津的人的鄰居(緊鄰)一個愛吃牛肉,另一個來自成都。

10.養魚的人住在最右邊的房子里。

11.吸萬寶路香煙的人住在吸希爾頓香煙的人和吸「555」香煙的人的中間(緊鄰)

12.紅房子的人愛喝茶。

13.愛喝葡萄酒的人住在愛吃豆腐的人的右邊隔壁。

14.吸紅塔山香煙的人既不住在吸健牌香煙的人的隔壁,也不與來自上海的人相鄰。

15.來自上海的人住在左數第二間房子里。

16.愛喝礦泉水的人住在最中間的房子里。

17.愛吃面條的人也愛喝葡萄酒。

18.吸「555」香煙的人比吸希爾頓香煙的人住的靠右

答案:紅房子養貓