1、閱讀簡歷
...
2、面試問題準備
2.1、html部分
1、什么是H5?
2、html語義化的含義和意義?
提示:用正確的標簽做正確的事情。
html語義化讓頁面的內(nèi)容結(jié)構(gòu)化,結(jié)構(gòu)更清晰,便于對瀏覽器、搜索引擎解析;
即使在沒有樣式CSS情況下也以一種文檔格式顯示,并且是容易閱讀的;
搜索引擎的爬蟲也依賴于HTML標記來確定上下文和各個關(guān)鍵字的權(quán)重,利于SEO;
使閱讀源代碼的人對網(wǎng)站更容易將網(wǎng)站分塊,便于閱讀維護理解。
2.2、css部分
1、css繪制圓形、三角形、梯形等;
提示:none
2、position的取值有哪些?relative、absolute、fixed有哪些區(qū)別?
提示:文檔流模型
3、怎樣讓文字從上到下顯示——例如古詩形式的?
提示:利用折行
書寫模式:writing-mode:lr-tb或writing-mode:tb-rl
4、圖片最大化居中裁剪的幾種方案?
提示:background、css嵌套、object-fit
5、元素居中的一些主要方法?
提示:*
6、css命名和書寫需要注意的地方?(規(guī)范)
提示:使用外部文件、不用下劃線命名、減少父子關(guān)系、少用id
7、頁面導入樣式時,使用link和@import有什么區(qū)別?
提示:1)link屬于XHTML標簽,除了加載CSS外,還能用于定義RSS, 定義rel連接屬性等作用;而@import是CSS提供的,只能用于加載CSS;
2)頁面被加載的時,link會同時被加載,而@import引用的CSS會等到頁面被加載完再加載;
3)import是CSS2.1 提出的,只在IE5以上才能被識別,而link是XHTML標簽,無兼容問題;
8、什么是外邊距合并?
提示:取較大值
9、如何去掉滾動條?
提示:布局長度控制
2.3、js部分
1、如何將一個字符串的每個字符用下劃線鏈接起來?
提示:split、join
2、程序中緩存數(shù)據(jù)的方式
提示:局部變量、全局變量、localStorage、cookie、sessionStorage
3、什么是閉包(closure),為什么要用它?
提示:閉包是指有權(quán)訪問另一個函數(shù)作用域中變量的函數(shù),創(chuàng)建閉包的最常見的方式就是在一個函數(shù)內(nèi)創(chuàng)建另一個函數(shù),通過另一個函數(shù)訪問這個函數(shù)的局部變量,利用閉包可以突破作用鏈域,將函數(shù)內(nèi)部的變量和方法傳遞到外部。
閉包的特性:
1.函數(shù)內(nèi)再嵌套函數(shù)
2.內(nèi)部函數(shù)可以引用外層的參數(shù)和變量
3.參數(shù)和變量不會被垃圾回收機制回收
4、如何執(zhí)行字符串形式的js代碼?
提示:eval(string)
5、什么是事件委托?
提示:事件委托就是利用事件冒泡,只指定一個事件處理程序,就可以管理某一類型的所有事件
6、ajax有沒有破壞js單線程機制
提示:
1、瀏覽器的四個線程:GUI渲染線程、javascript引擎線程、瀏覽器事件觸發(fā)線程、HTTP請求線程
2、回調(diào)和任務(wù)隊列(任務(wù)隊列中的任務(wù)是平等的)
2.4、框架部分部分
1、bootstrap的主要特點是什么?
提示:柵格系統(tǒng)、響應(yīng)式布局
2、react的主要特點
提示:聲明式渲染、基于組件
3、react和react native的區(qū)別?
提示:
4、react和vue的區(qū)別?
提示:
5、vue的主要特點
提示:響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件
6、Angular、vue、react的路由的實現(xiàn)原理?他們最大的特點分別是什么?
提示:
2.5、綜合(其他)
1、Ajax是什么?Ajax解決瀏覽器緩存問題?
提示:添加隨機數(shù)、設(shè)置請求無cache或者立即更新
2、網(wǎng)頁適配pc和mobile的一些方式?
提示:js計算設(shè)定固定大小、媒體查詢
3、什么是“前端路由”?什么時候適合使用“前端路由”? “前端路由”有哪些優(yōu)點和缺點?前端路由的實現(xiàn)原理?
4、一個頁面從輸入 URL 到頁面加載顯示完成,這個過程中都發(fā)生了什么?
提示:注:這題勝在區(qū)分度高,知識點覆蓋廣,再不懂的人,也能答出幾句,
而高手可以根據(jù)自己擅長的領(lǐng)域自由發(fā)揮,從URL規(guī)范、HTTP協(xié)議、DNS、CDN、數(shù)據(jù)庫查詢、
到瀏覽器流式解析、CSS規(guī)則構(gòu)建、layout、paint、onload/domready、JS執(zhí)行、JS API綁定等等;
詳細版:
1、瀏覽器會開啟一個線程來處理這個請求,對 URL 分析判斷如果是 http 協(xié)議就按照 Web 方式來處理;
2、調(diào)用瀏覽器內(nèi)核中的對應(yīng)方法,比如 WebView 中的 loadUrl 方法;
3、通過DNS解析獲取網(wǎng)址的IP地址,設(shè)置 UA 等信息發(fā)出第二個GET請求;
4、進行HTTP協(xié)議會話,客戶端發(fā)送報頭(請求報頭);
5、進入到web服務(wù)器上的 Web Server,如 Apache、Tomcat、Node.JS 等服務(wù)器;
6、進入部署好的后端應(yīng)用,如 PHP、Java、JavaScript、Python 等,找到對應(yīng)的請求處理;
7、處理結(jié)束回饋報頭,此處如果瀏覽器訪問過,緩存上有對應(yīng)資源,會與服務(wù)器最后修改時間對比,一致則返回304;
8、瀏覽器開始下載html文檔(響應(yīng)報頭,狀態(tài)碼200),同時使用緩存;
9、文檔樹建立,根據(jù)標記請求所需指定MIME類型的文件(比如css、js),同時設(shè)置了cookie;
10、頁面開始渲染DOM,JS根據(jù)DOM API操作DOM,執(zhí)行事件綁定等,頁面顯示完成。
簡潔版:
瀏覽器根據(jù)請求的URL交給DNS域名解析,找到真實IP,向服務(wù)器發(fā)起請求;
服務(wù)器交給后臺處理完成后返回數(shù)據(jù),瀏覽器接收文件(HTML、JS、CSS、圖象等);
瀏覽器對加載到的資源(HTML、JS、CSS等)進行語法解析,建立相應(yīng)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如HTML的DOM);
載入解析到的資源文件,渲染頁面,完成。
5、對稱加密和非對稱加密分別是什么?
提示:公鑰、私鑰
6、用戶注冊登錄時怎樣記住密碼?
提示:(包含加密方式)
2.6、算法
1、簡述二分查找的基本原理?
提示:
2、數(shù)字數(shù)組的長度為98,內(nèi)容為1到100,求缺失的兩個數(shù);
提示:
3、m人圍一圈,從第一個人開始數(shù)第n個人踢出,再從第n+1個人開始數(shù)第n個人踢出,以此類推,知道剩下一個人,請問他的初始編號;
提示: