面試:技術題彙總

一面:技術基礎面+理論基礎面

理論基礎(重點是基礎、潛力、學習能力、獨立研究能力)

1.數據結構算法題目javascript

  • 如何計算有向無環圖中的單源最短路徑
  • 如何判斷一顆二叉樹是對稱的
  • 如何用O(1)的時間複雜度計算棧中的最大最小值
  • 如何複製一個雙向鏈表(如何複製一個有向圖)
  • 介紹參加過數學建模、ACM程序設計大賽的經驗(應屆生)

2.語言題目css

  • 高級語言是如何編譯成機器語言的,機器是如何執行的
  • 如何實現一個json或XML的語法解析器
  • 編程語言的垃圾回收是如何作到的

3.系統題目html

  • 操做系統是如何支持多線程
  • 什麼是原子操做,系統如何實現的
  • 簡述線程調度的過程和原理
  • 操做系統管理的核心功能主要有哪些
  • 現代操做系統內存管理中的頁和段有什麼區別
  • 進程的虛擬內存結構是什麼
  • 進程通訊和線程通訊分別有哪些

4.網絡題目前端

  • 簡述TCP的三次握手協議
  • 簡述HTTP協議頭部的各個字段的含義和做用
  • 簡述ping命令背後的過程和原理

5.數據庫題目java

  • 簡述數據庫鎖的分類和死鎖的處理
  • 簡述數據庫的存儲過程、觸發器的概念和做用
  • 簡述數據庫索引的分類和做用
  • 簡述數據庫事務的概念、特性、做用
  • 簡述數據庫事務的鎖與併發的關係

6.分佈式題目node

  • 簡述一致性HASH算法的原理和應用
  • 簡述分佈式的消息廣播和領導選舉算法(洪泛算法、生成樹算法...)
  • 簡述MapReduce基本執行過程

7.大數據題目mysql

  • 海量日誌數據,提取出某日訪問百度次數最多的那個IP。
  • 有10個文件,每一個文件1G,每一個文件的每一行存放的都是用戶的query,每一個文件的query均可能重複。要求你按照query的頻度排序。

8.數據挖掘與機器學習題目jquery

  • 機器學習算法分爲哪幾類,各有哪些精典算法且適用於哪些場景,擇一種熟悉的算法舉例
  • 簡述貝葉斯分類算法原理以及用於文本分類的應用
  • 簡述關聯分析中的Apriori算法思想和原理
  • 簡述SVM算法原理以及google對SVM算法最新的研究成果
  • 談談對CNN算法的理解

技術經驗(重點是項目理解的深度、獨立解決問題的能力、技術的深度、技術的寬度)

前端方向

1.javasciptwebpack

  • 用javascript設計並實現一個簡單的繼承,包括子類、父類,並用構造函數實例化一個子類對象
  • 介紹javascript的閉包和做用域鏈,試舉例
  • javascript函數調用共有哪4種方式,試舉例
  • javascript函數中的this如何肯定,共有幾種狀況,試舉例
  • ajax的原理和過程,如何調試
  • json字符串轉換爲對象的方法,瀏覽器兼容性如何處理,試舉例
  • 如何進行瀏覽器特徵偵測
  • 那些操做會形成內存泄漏
  • 簡述jsonp的原理
  • ajax通訊中經常使用的content-type類型, 以及它們之間的區別
  • 不一樣瀏覽器版本關於Array API的差別
  • 介紹你用過的es6和promise的知識點(你認爲的優缺點)
  • for-in循環的用法舉例, 注意不一樣瀏覽器的兼容性
  • 代碼相關
// 問題:foo的值是什麼?
var foo = 10 + '20'; // 問題:如何實現如下函數? add(2, 5); // 7 add(2)(5); // 7 // 問題:下面兩個 alert 的結果是什麼? var foo = "Hello"; (function() { var bar = " World"; alert(foo + bar); })(); alert(foo + bar); // 問題:foo.x的值是什麼? var foo = {n: 1}; var bar = foo; foo.x = foo = {n: 2}; // 問題:下面代碼的輸出是什麼? console.log('one'); setTimeout(function() { console.log('two'); }, 0); console.log('three'); // 問題:下面代碼的輸出是什麼? var a = 1; function fn() { if (!a) { var a = 2; } console.log(a); // ? } fn(); // 問題:下面代碼的輸出是什麼? var a = 1; function fn() { a = 2; return; function a() {} } fn(); console.log(a); // ? // 問題:下面代碼的輸出是什麼? var i = 0, j = 0; for (; i<100; i++) { j = j++; } alert(j); // 問題:下面代碼的輸出是什麼? var obj = { count: 1, func: function(count) { console.log(this.count); console.log(count); } }; (function test() { var count = 10; obj.func(count); var gunc = obj.func; gunc(count); })();

2.csscss3

  • 簡述css選擇器的用法
  • 簡述css盒模型、定位
  • 簡述css float的用法
  • 簡述css flex佈局的優勢
  • 簡述css規則的優先級、CSS的層疊特性
  • 簡述css3動畫和javascript動畫的區別
  • 簡述css僞類的用法,試舉例
  • 詳細描述盒模型與background的關係
  • 詳細描述字符串不換行、佈局居中顯示分別如何實現

3.html

  • 行內元素和塊元素的區別?
  • Doctype做用?嚴格模式與混雜模式如何區分?它們有何意義?
  • HTML5 爲何只須要寫 <!DOCTYPE HTML>?
  • Label的做用是什麼?是怎麼用的?
  • 簡述iframe的缺點
  • html DOM文檔樹的節點類型有哪些,如何遍歷DOM樹
  • html 如何獲取和設置一個節點的屬性

4.瀏覽器事件

  • 簡述瀏覽器事件的處理過程
  • 如何進行事件委託和防止事件致使內存泄露
  • 簡述DOM0級,DOM2級,DOM3級事件的使用方式
  • 簡述IE事件對象和chrome, firefox事件對象的差別
  • 哪些html元素擁有onload事件, 如何使用, 瀏覽器兼容性如何
  • 簡述scroll與mousewheel事件的區別
  • overflow:hidden, 子節點被父節點遮蓋的部分可否觸發click事件
  • 自定義實現頁面組件拖動效果

5.html表單

  • 有哪些表單元素,input表單元素有哪些事件
  • form可否嵌套,若是嵌套會發生什麼狀況
  • 如何進行表單驗證
  • 如何防止表單屢次提交
  • 如何對錶單進行序列化

服務端方向

  • 介紹熟悉的框架及其原理以及遇到的問題(java方向,node方向,C++方向,.net方向自選)
  • 介紹計算機編碼知識unicode字符集和utf-8編碼, 介紹你遇到的中文亂碼問題, 並如何解決的。
  • 簡述socket多線程通訊的原理和過程(C, java自選)
  • 經常使用的哪些數據結構,介紹其原理、優缺點(不分語言,如LinkedHashMap,ConcurrentHashMap)
  • 簡述數據存儲和處理(oracle, mysql, postgre, mongodb, redis, hdfs)經驗
  • 尾遞歸如何用循環實現
  • 簡述設計模式六大原則
  • 什麼狀況下會致使棧溢出發生,如何避免

node可選

  • js做用域有什麼特別的地方
  • js的繼承如何實現
  • js中的this如何肯定
  • js中的apply, call和bind有什麼區別
  • js函數的caller, callee和arguments分別是什麼
  • js函數有哪幾個基本屬性
  • js中的閉包是什麼, 有哪些用處
  • node的架構分層和核心模塊各有哪些
  • node的全局對象有哪些,各有什麼用法
  • node的事件循環怎麼定義,有什麼用處
  • node的文件讀寫有哪些api,有什麼區別
  • node的經常使用web框架有哪些
  • node的異步回調處理有哪些庫,具體如何使用

先後端綜合

  • 描述字符串拼接提高性能的方法和原理(能夠是本身熟悉的語言)
  • 闡述多線程死鎖造成的條件並簡單舉例
  • 介紹先後端通訊的協議和數據格式(json, protocal buffer等),服務端遠程調用的協議(xmlrpc, soap, hessain等)
  • 描述一個頁面從輸入 URL 到頁面加載完的過程當中都發生了什麼事情?越詳細越好
  • 簡述你遇到哪些很是難的問題是google搜索不到解決方案的,詳細介紹獨立解決的過程

系統運維和監控

  • shell進程與前臺進程的關係
  • 介紹熟悉的中間件或web服務器
  • 如何優化JVM參數
  • 如何調優web容器參數(線程數,會話存活時間)
  • 經常使用的性能監控手段(數據庫,中間件,日誌,業務訪問)

二面:技術實踐面+知識深度和廣度面

  1. 參與過項目的核心經驗(接口的設計和維護, 核心算法的實現, 性能優化和提高, 內存泄露的查找, 多線程或攜程的使用)
  2. 軟件設計模式,代碼重構,編碼規範,工程構建(工具,能夠分語言介紹各自的工具,C++, java(ant,maven,gradle), javascript(grunt, gulp, webpack)
  3. 介紹閱讀過的經典技術書籍, 關注過的業界技術大牛
前端可選
  1. 業界各大主流前端框架或庫的的理解和比較(jquery, YUI, EXT, Kendo UI, Angular, React, Vue)
  2. 介紹AMD、CMD、CommonJS的發展歷史和標準
  3. 前端頁面性能優化的經常使用技術手段和經驗(代碼,服務器,緩存,網絡,跨域)
  4. 保持頁面流暢、不卡頓的經常使用技術手段
  5. 保護WEB安全攻擊的經常使用方法(XSS跨站腳本,數據庫SQL注入等...)
  6. UI設計的經典法則和經典案例
  7. 簡述你所理解的優雅降級和漸進加強
服務端可選
  1. 介紹常見的數據挖掘和機器學習算法庫,瞭解或熟悉哪些算法
  2. 數據庫性能優化的經常使用方法
  3. 介紹分佈式通訊原理和過程、分佈式數據存儲和計算(實踐過或瞭解過的開源框架)
  4. 談談對C10K問題的理解
  5. 簡述進程、攜程的理解
  6. 談談對函數式編程、golang、scala語言的想法
  7. 簡述web框架的分層架構、數據庫分片、軟件設計原則的見解
  8. 簡述處理web安全的經常使用手段

三面:價值傾向面+公司選擇傾向面

  1. 如何看待當前的創業
  2. 爲何選擇創業公司(或小公司),而不選擇互聯網大公司(BAT)
  3. 如何分配本身的時間
  4. 對新技術的發展有什麼見解,或準備深刻研究哪方面的技術
  5. 計劃閱讀哪些書籍
相關文章
相關標籤/搜索