2020年前端面試問題彙總

目錄

開放性問題

平時怎麼學習

我認爲首先要有自己的節奏,有自己的知識體系和學習路線,然後再在這個路線上,通過看相關書籍,相關博客,相關代碼進行豐富和充實,同時會寫一些博客進行技術沉澱。

如果需要你加班,你會加嗎,抵觸嗎?

不會,如果項目有需要的話,我肯定是願意加班的,但同時我會提高我個人效率,加快項目進度。

一個小項目讓你自己負責搭建底層一些架構,你能勝任嗎?

回答例如:我肯定願意嘗試,並做到最優的選擇方案出來。

如果項目拖太久,你情緒低落或者厭煩了怎麼調節?

一般來說,我不太會產生厭煩情緒,但是在我目前的生活中,如果我產生厭煩情緒,會去跑步,調節一下,然後回來繼續完成任務。

你建議自己造輪子,還是利用開源的輪子?

回答:根據實際情況而定,如果開源完全滿足 可以自己二次開發就好,大大縮短開發週期,

如果實在沒有契合度很高的,可以花費幾個工作日嘗試造輪。

考察學習能力和方法

你每天必須登錄的網站(前端技術相關)是什麼?

csdn 、github 、廖雪峯、b站

前端技術方面看過哪些書,有無筆記,都有哪些收穫。

html5程序設計、JavaScript高級程序設計

收藏了哪些代碼片段?有想過開源自己的代碼嘛?

怎麼理解前端技術的大趨勢?自己再做哪方面的知識儲備?

框架爲主
jQuery Dom 驅動的思想深入人心;React 則推崇組件化,萬物皆組件;Angular 則把 MVC 在前端領域發揚光大;而 Vue 則是以數據驅動爲核心的 MVVM 架構。

是否瞭解或精通其他(後端)的編程語言?

nodejs

做項目有沒有遇到哪些印象深刻的技術攻關,具體遇到什麼問題,怎麼找答案的,最後怎麼解的。

對以後自己的前端職業路線,怎麼規劃?

「 前端框架 」

對 MVC、MVVM的理解

vue、angularjs等 相對於 jQuery在開發上有什麼優點?

前後分離的思想了解嗎?

你上一個項目都用到了那些方法優化js的性能?

5)angular的生命週期?

6)說一下你對vue和vuex的使用方法,vue的組件複用機制

HTML

CSS

JS

static全局變量與普通的全局變量有什麼區別?static局部變量和普通局部變量有什麼區別?static函數與普通函數有什麼區別?

全局變量(外部變量)的說明之前再冠以static 就構成了靜態的全局變量。全局變量本身就是靜態存儲方式, 靜態全局變量當然也是靜態存儲方式。 這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變量的作用域是整個源程序, 當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。 而靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效, 在同一源程序的其它源文件中不能使用它。由於靜態全局變量的作用域侷限於一個源文件內,只能爲該源文件內的函數公用, 因此可以避免在其它源文件中引起錯誤。

從以上分析可以看出, 把局部變量改變爲靜態變量後是改變了它的存儲方式即改變了它的生存期。把全局變量改變爲靜態變量後是改變了它的作用域, 限制了它的使用範圍。

static函數與普通函數作用域不同。僅在本文件。只在當前源文件中使用的函數應該說明爲內部函數(static),內部函數應該在當前源文件中說明和定義。對於可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件

static全局變量與普通的全局變量有什麼區別:static全局變量只初使化一次,防止在其他文件單元中被引用;

static局部變量和普通局部變量有什麼區別:static局部變量只被初始化一次,下一次依據上一次結果值;

static函數與普通函數有什麼區別:static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝

1.position定位有哪幾種?各有什麼特點?

position的屬性值共有四個常用的:static、relative、absolute、fixed
Static
所有元素在默認的情況下position屬性均爲static,而我們在佈局上經常會用到的相對定位和絕對定位常用的屬性top、bottom、left、right或者 z-index聲明在position爲static的情況下無效。其用法爲:在改變了元素的position屬性後可以將元素重置爲static讓其迴歸到頁面默認的文檔流中。
Relative
relative定位,又稱爲相對定位,相對定位相對的是它原本在文檔流中的位置而進行的偏移,而我們也知道relative定位也是遵循正常的文檔流,它沒有脫離文檔流,但是它的top/left/right/bottom屬性是生效的,可以說它是static到absolute的一箇中間過渡屬性,最重要的是它還佔有文檔空間,而且佔據的文檔空間不會隨top / right / left / bottom 等屬性的偏移而發生變動。
Absolute
absolute定位,也稱爲絕對定位,雖然它的名字號曰“絕對”,但是它的功能卻更接近於"相對"一詞,爲什麼這麼講呢?原來,使用absolute定位的元素脫離文檔流後,就只能根據祖先類元素(父類以上)進行定位,而這個祖先類還必須是以position非static方式定位的,
舉個例子,a元素使用absolute定位,它會從父類開始找起,尋找以position非static方式定位的祖先類元素(Note!一定要是直系祖先纔算.),直到html根標籤爲止。
這裏還需要注意的是,relative和static方式在最外層時是以body標籤爲定位原點的,而absolute方式在無父級是position非static定位時是以html作爲原點定位。

2.瀏覽器訪問過程

(1)輸入URL或者點擊鏈接,請求訪問。
(2)瀏覽器發送http請求,連接服務器。
(3)服務器通過接收到的客戶端的信息(如登錄信息),去數據庫進行查詢。
(4)數據庫將數據返回給服務器,服務器將HTML頁面發給客戶端。服務器響應。

3.淺拷貝和深拷貝的區別和實現方法

這是針對引用類型,淺拷貝就是複製指針,但數據內存還是同一塊,深拷貝就是將數據重新複製一份到新的內存

4. static有什麼用途?

1)限制變量的作用域
2)設置變量的存儲域

5. 引用與指針有什麼區別?

  1. 引用必須被初始化,指針不必。
  2. 引用初始化以後不能被改變,指針可以改變所指的對象。
  3. 不存在指向空值的引用,但是存在指向空值的指針。

6. 全局變量和局部變量在內存中是否有區別?如果有,是什麼區別?

全局變量儲存在靜態數據庫,局部變量在堆棧

7. 什麼是平衡二叉樹?

左右子樹都是平衡二叉樹 且左右子樹的深度差值的絕對值不大於1

8. Internet採用哪種網絡協議?該協議的主要層次結構?

tcp/ip 應用層/傳輸層/網絡層/數據鏈路層/物理層

9. Internet物理地址和IP地址轉換採用什麼協議?

ARP (Address Resolution Protocol)(地址解析協議)
10.IP地址的編碼分爲哪倆部分?
IP地址由兩部分組成,網絡號和主機號

10.局部變量能否和全局變量重名?

局部變量可以與全局變量同名,在函數內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。對於有些編譯器而言,在同一個函數內可以定義多個同名的局部變量,比如在兩個循環體內都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環體內。

11.如何引用一個已經定義過的全局變量?

答:extern

10.全局變量可不可以定義在可被多個.C文件包含的頭文件中?爲什麼?

答:可以,在不同的C文件中以static形式來聲明同名全局變量。
可以在不同的C文件中聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初值,此時連接不會出錯

11.do……while和while……do有什麼區別?

答:前一個循環一遍再判斷,後一個判斷以後再循環
程序的局部變量存在於(堆棧)中,全局變量存在於(靜態區 )中,動態申請數據存在於( 堆)中。

12.隊列先進先出,棧後進先出

13.對於一個頻繁使用的短小函數,在C語言中應用什麼實現,在C++中應用什麼實現?

c用宏定義,c++用inline

14.進程和線程的差別。

線程是指進程內的一個執行單元,也是進程內的可調度實體.
與進程的區別:
(1)調度:線程作爲調度和分配的基本單位,進程作爲擁有資源的基本單位
(2**)併發性:**不僅進程之間可以併發執行,同一個進程的多個線程之間也可併發執行
(3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但可以訪問隸屬於進程的資源.
(4)**系統開銷:**在創建或撤消進程時,由於系統都要爲之分配和回收資源,導致系統的開銷明顯大於創建或撤消線程時的開銷。

15.c和c++中的struct有什麼不同?

c和c++中struct的主要區別是c中的struct不可以含有成員函數,而c++中的struct可以。c++中struct和class的主要區別在於默認的存取權限不同struct默認爲public,而class默認爲private

16.面試題: 線程與進程的區別和聯繫? 線程是否具有相同的堆棧? dll是否有獨立的堆棧?

進程是死的,只是一些資源的集合,真正的程序執行都是線程來完成的,程序啓動的時候操作系統就幫你創建了一個主線程。每個線程有自己的堆棧。
DLL中有沒有獨立的堆棧,這個問題不好回答,或者說這個問題本身是否有問題。因爲DLL中的代碼是被某些線程所執行,只有線程擁有堆棧,如果DLL中的代碼是EXE中的線程所調用,那麼這個時候是不是說這個DLL沒有自己獨立的堆棧?如果DLL中的代碼是由DLL自己創建的線程所執行,那麼是不是說DLL有獨立的堆棧?以上講的是堆棧,如果對於堆來說,每個DLL有自己的堆,所以如果是從DLL中動態分配的內存,最好是從DLL中刪除,如果你從DLL中分配內存,然後在EXE中,或者另外一個DLL中刪除,很有可能導致程序崩潰。

17. TCP與UDP的區別?

TCP:傳輸控制協議,面向連接,可靠,三次握手協議,TCP傳輸慢
UDP:用戶數據報協議,無連接,不可靠,UDP傳輸速度快
基於TCP的協議有:HTTP/HTTPS,Telnet,FTP,SMTP。
基於UDP的協議有:DHCP,DNS,SNMP,TFTP,BOOTP

18.TCP的建立以及對應的函數

服務器:socket,bind,listen,accept,send,recv,closesocket…
客戶端:socket,connect,recv,send

19.UDP的建立以及對應的函數

服務器:socket,bind,recvfrom…
客戶端:socket,sendto

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章