程序員經(jīng)典面試題目
通常我們在面試計算機程序員時,會遇到各種各樣的問題?,F(xiàn)在我們把程序員面試所要遇到的問題做了一個總結(jié)與歸納。下面小編給大家?guī)沓绦騿T經(jīng)典面試題目有哪些,希望能幫助到大家!
2021年前端面試題目
1.1、前端 MV框架的意義
早期前端都是比較簡單,基本以頁面為工作單元,內(nèi)容以瀏覽型為主,也偶爾有簡單的表單操作,基本不太需要框架。
隨著 AJAX 的出現(xiàn),Web2.0的興起,人們可以在頁面上可以做比較復雜的事情了,然后前端框架才真正出現(xiàn)了。
如果是頁面型產(chǎn)品,多數(shù)確實不太需要它,因為頁面中的 JavaScript代碼,處理交互的絕對遠遠超過處理模型的,但是如果是應用軟件類產(chǎn)品,這就太需要了。
長期做某個行業(yè)軟件的公司,一般都會沉淀下來一些業(yè)務組件,主要體現(xiàn)在數(shù)據(jù)模型、業(yè)務規(guī)則和業(yè)務流程,這些組件基本都存在于后端,在前端很少有相應的組織。
從協(xié)作關(guān)系上講,很多前端開發(fā)團隊每個成員的職責不是很清晰,有了前端的 MV框架,這個狀況會大有改觀。
之所以感受不到 MV框架的重要性,是因為Model部分代碼較少,View的相對多一些。如果主要在操作View和Controller,那當然 jQuery 這類庫比較好用了。
參考《前端 MV框架的意義》
1.2、請簡述盒模型
IE6盒子模型與W3C盒子模型。
文檔中的每個元素被描繪為矩形盒子。盒子有四個邊界:外邊距邊界margin, 邊框邊界bder, 內(nèi)邊距邊界padding與內(nèi)容邊界content。
CSS3中有個box-sizing屬性可以控制盒子的計算方式,
content-box:padding和bder不被包含在定義的width和height之內(nèi)。對象的實際寬度等于設(shè)置的width值和bder、padding之和。(W3C盒子模型)
bder-box:padding和bder被包含在定義的width和height之內(nèi)。對象的實際寬度就等于設(shè)置的width值。(IE6盒子模型)
參考《盒模型》
1.3、請你談談Cookie的弊端
a. 每個特定的域名下最多生成的cookie個數(shù)有限制
b. IE和Opera 會清理近期最少使用的cookie,F(xiàn)irefox會隨機清理cookie
c. cookie的最大大約為4096字節(jié),為了兼容性,一般不能超過4095字節(jié)
d. 安全性問題。如果cookie被人攔截了,那人就可以取得所有的session信息。
1.4、瀏覽器本地存儲
在HTML5中提供了sessionStage和localStage。
sessionStage用于本地存儲一個會話(session)中的數(shù)據(jù),這些數(shù)據(jù)只有在同一個會話中的頁面才能訪問并且當會話結(jié)束后數(shù)據(jù)也隨之銷毀,是會話級別的存儲。
localStage用于持久化的本地存儲,除非主動刪除數(shù)據(jù),否則數(shù)據(jù)是永遠不會過期的。
1.5、web stage和cookie的區(qū)別
a. Cookie的大小是受限的
b. 每次你請求一個新的頁面的時候Cookie都會被發(fā)送過去,這樣無形中浪費了帶寬
c. cookie還需要指定作用域,不可以跨域調(diào)用
d. Web Stage擁有setItem,getItem等方法,cookie需要前端開發(fā)者自己封裝setCookie,getCookie
e. Cookie的作用是與服務器進行交互,作為HTTP規(guī)范的一部分而存在 ,而Web Stage僅僅是為了在本地“存儲”數(shù)據(jù)而生
f. IE7、IE6中的UserData通過簡單的代碼封裝可以統(tǒng)一到所有的瀏覽器都支持web stage
1.6、對BFC規(guī)范的理解
BFC全稱是Block Fmatting Context,即塊格式化上下文。它是CSS2.1規(guī)范定義的,關(guān)于CSS渲染定位的一個概念。
BFC是頁面CSS 視覺渲染的一部分,用于決定塊盒子的布局及浮動相互影響范圍的一個區(qū)域。
BFC的一個最重要的效果是,讓處于BFC內(nèi)部的元素與外部的元素相互隔離,使內(nèi)外元素的定位不會相互影響。
利用BFC可以閉合浮動,防止與浮動元素重疊。
參考《Learning BFC》
1.7、線程與進程的區(qū)別
a. 一個程序至少有一個進程,一個進程至少有一個線程
b. 線程的劃分尺度小于進程,使得多線程程序的并發(fā)性高
c. 進程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享內(nèi)存,從而極大地提高了程序的運行效率
d. 每個獨立的線程有一個程序運行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨立執(zhí)行,必須依存在應用程序中,由應用程序提供多個線程執(zhí)行控制
e. 多線程的意義在于一個應用程序中,有多個執(zhí)行部分可以同時執(zhí)行。但操作系統(tǒng)并沒有將多個線程看做多個獨立的應用,來實現(xiàn)進程的調(diào)度和管理以及資源分配
1.8、你都使用哪些工具來測試代碼的性能?
JSPerf, Dromaeo
1.9、你遇到過比較難的技術(shù)問題是?你是如何解決的?
1.10、常使用的庫有哪些?常用的前端開發(fā)工具?開發(fā)過什么應用或組件?
關(guān)于性能測試的面試題目
1、如何識別系統(tǒng)瓶頸?
從TPS指標分析,TPS即系統(tǒng)單位時間內(nèi)處理事務的數(shù)量。當前隨著用戶數(shù)的增長期系統(tǒng)每秒可處理的事務數(shù)是否也會增長。
2、如何發(fā)現(xiàn)數(shù)據(jù)庫的相關(guān)問題?
①通過運行某些相應的已獲取的SQL語句,判斷是否由于數(shù)據(jù)庫索引所導致的事務響應過長的問題發(fā)生。
②通過實時監(jiān)控工具(nmon等)監(jiān)控分析:Ⅰ.系統(tǒng)在運行過程中其CPU是否穩(wěn)定運行或CPU耗用是否過高;Ⅱ.在系統(tǒng)運行過程中其內(nèi)存是否存在內(nèi)存泄漏現(xiàn)象;
3、think_time的作用是什么?
①降低當前運行時壓力,環(huán)節(jié)對應用服務器所造成的壓力;
②模擬真實生產(chǎn)用戶操作,考察對服務器所造成的影響。
4、進行參數(shù)化的目的是什么?
①減少腳本的大小;
②便于腳本的維護,從而更加真實的模擬生產(chǎn)環(huán)境的數(shù)據(jù)。
5、容量測試方法中為什么要以逐步遞增的方式進行?
虛擬用戶數(shù)隨著負載時間的延長而增加,可以幫助確定系統(tǒng)響應時間減慢的準確時間以及準確的用戶數(shù)。
6、假設(shè)在測試過程中某些事務的響應時間過長,但分析應用服務、數(shù)據(jù)庫以及網(wǎng)絡(luò)都屬于正常現(xiàn)象,問題可能出現(xiàn)的原因有哪些?
①LoadRunner客戶機器是否已無法承載當前運行壓力導致LoadRunner無法及時獲取從服務端返回的信息;
②Tink_time是否已忽略;
③確定當前被測系統(tǒng)架構(gòu),是否為在每次測試過程中清楚緩存所導致。
7、如何發(fā)現(xiàn)應用服務器的相關(guān)問題?
①通過某些事務的運行,判斷是否在應用代碼層未進行調(diào)優(yōu)導致事務響應事件過長;
②通過實時監(jiān)控工具(nmon等)監(jiān)控分析:Ⅰ.系統(tǒng)在運行過程中其CPU是否穩(wěn)定運行或CPU耗用是否過高;Ⅱ.在系統(tǒng)運行過程中其內(nèi)存是否存在內(nèi)存泄漏現(xiàn)象;Ⅲ.打開相應日志、分析在運行過程中是否存在交易報錯并獲取錯誤原因查看是否由于代碼原因?qū)е陆灰族e誤發(fā)生。
8、簡述性能測試流程?
①分析性能需求:挑選用戶使用最頻繁的場景來測試,比如:登陸,搜索,下單等等。確定性能指標:比如:事務通過率為100%,TOP99%是5秒,最大并發(fā)用戶為1000人,CPU和內(nèi)存的使用率在70%以下;
②制定性能測試計劃,明確測試時間(通常在功能穩(wěn)定后,如第一輪測試后進行)和測試環(huán)境和測試工具;
③編寫測試用例;
④搭建測試環(huán)境,準備好測試數(shù)據(jù);
⑤編寫性能測試腳本;
⑥性能測試腳本調(diào)優(yōu)。設(shè)置檢查點、參數(shù)化、關(guān)聯(lián)、集合點、事務,調(diào)整思考時間,刪除冗余腳本;
⑦設(shè)計測試場景,運行測試腳本,監(jiān)控服務器;
⑧分析測試結(jié)果,收集相關(guān)的日志提單給開發(fā);
⑨回歸性能測試;
⑩編寫測試報告。
9、如何確定系統(tǒng)最大負載?
通過負載測試,不斷增加用戶數(shù),隨著用戶數(shù)的增加,各項性能指標也會相應產(chǎn)生變化,當出現(xiàn)了性能拐點,比如,當用戶數(shù)達到某個數(shù)量級時,響應時間突然增長,那么這個拐點處對應的用戶數(shù)就是系統(tǒng)能承載的最大用戶數(shù)。
10、性能測試指標有哪些?
①響應時間;
②吞吐量;
③Cpu;
④內(nèi)存;
⑤Io;
⑥D(zhuǎn)isk。
Shell 腳本面試題目
一、Shell腳本是什么、它是必需的嗎?
一個Shell腳本是一個文本文件,包含一個或多個命令。作為系統(tǒng)管理員,我們經(jīng)常需要使用多個命令來完成一項任務,我們可以添加這些所有命令在一個文本文件(Shell腳本)來完成這些日常工作任務。
二、什么是默認登錄shell,如何改變指定用戶的登錄shell?
在Linux操作系統(tǒng),“/bin/bash”是默認登錄shell,是在創(chuàng)建用戶時分配的。使用chsh命令可以改變默認的shell。
三、可以在shell腳本中使用哪些類型的變量?
在shell腳本,我們可以使用兩種類型的變量:①系統(tǒng)定義變量;②用戶定義變量。
系統(tǒng)變量:是由系統(tǒng)系統(tǒng)自己創(chuàng)建的。這些變量通常由大寫字母組成,可以通過“set”命令查看。
用戶變量:是由系統(tǒng)用戶來生成和定義,變量的值可以通過命令“echo $<變量名>”查看。
四、如何將標準輸出和錯誤輸出同時重定向到同一位置?
這里有兩個方法來實現(xiàn):
方法一:2>&1 (如# ls /usr/share/doc > out.txt 2>&1 )
方法二:&> (如# ls /usr/share/doc &> out.txt )
五、shell腳本中“$?”標記的用途是什么?
在寫一個shell腳本時,如果你想要檢查前一命令是否執(zhí)行成功,在if條件中使用“$?”可以來檢查前一命令的結(jié)束狀態(tài)。
六、如何在后臺運行腳本?
在腳本后面添加 “&”。
七、"chmod 500 script" 做什么?
使腳本所有者擁有可執(zhí)行權(quán)限。
八、">" 做什么?
重定向輸出流到文件或另一個流。
九、& 和 && 有什么區(qū)別
& - 希望腳本在后臺運行的時候使用它;
&& - 當前一個腳本成功完成才執(zhí)行后面的命令/腳本的時候使用它。
十、什么時候要在 [ condition ] 之前使用 “if”?
當條件滿足時需要運行多條命令的時候。
程序員經(jīng)典面試題目相關(guān)文章:
★ 程序員面試邏輯題