經典技術面試指南

  • 目錄
  • 計算機基礎知識
    • 數據結構
    • 算法
    • 操作系統
    • 計算機網絡
    • 數據庫
    • 海量數據處理
    • C語言基礎
    • Java基礎
    • Java高級
    • Java Web
    • 設計模式
    • 知識的綜合能力
    • 工具使用
    • 項目相關
    • 技術熱情
    • 表達能力
    • 思考方式
    • 其他
    • 推薦閱讀

目錄

最近看到一份不錯的面試總結,也是每位程序猿都應該掌握的基礎(特別是對于馬上要畢業的應屆生來說可以作為一個面試的準備大綱),后續我會將對應的答案總結出來。

轉自:https://www.toutiao.com/i6537891982017036813/

最近,各大公司開始了春招,很多人已經開始在準備面試了,特地來總結下初中級程序員應該掌握的面試題目。這篇面試指南,只適用于初中級程序員,其中不涉及分布式等問題。關于中高級的程序員問題,我后面可能再出一篇文章。
這里寫圖片描述
對于一個初中級程序員來說,面試問題不僅僅涉及到Java語言,還會包括很多其他知識,比如計算機基礎知識(數據結構、計算機網絡、操作系統等)、C語言基礎、Java底層知識以及一些框架相關知識等。本文幾乎覆蓋到了所有領域——

  • 計算機基礎知識
  • C語言基礎
  • Java基礎
  • Java高級
  • Java Web
  • 設計模式
  • 知識的綜合能力
  • 工具使用
  • 項目相關
  • 技術熱情
  • 表達能力
  • 思考方式
  • 其他
  • 推薦閱讀

還有,我知道很多人會問關于這些題目的答案問題。答案都有,由于篇幅有限沒辦法直接貼上來,但我希望,你能自己認真先琢磨一下,看看自己的整體水平如何?后續有機會在酌情發不出答案來。

本文的目的,主要是通過體系化梳理,為調動你的學習的積極主動性!——搞技術的,學無止境呀~

這套題目,總數是280道,道道都是精品必考題。如果這些面試題都能很好的回答上的話,參加國內各大公司的校招基本都沒啥問題。

我很難估算一個人要掌握這所有的題目有多難。但是我覺得,如果你是一個有一定的計算機基礎知識并且有一定的Java經驗,全部掌握差不多3-6個月左右吧。

為了方便,我把他們分了類,有一些是必看的,我用!(感嘆號)標注,有一些進階型的我用%(百分號)標注,有一些需要了解的,我用?(問號)標注。

必會關鍵字

void byte int long char short float doubleString StringBuffer StringBuilder Array CollectionCollections List ArrayList LinkedList Vector SetHashMap TreeMap LinkedHashMap ConcerrentHashMapSet TreeMap HashMap synchronized volatiletransient implements extends public privateprotected this super static final const runstart thread enmu stack queue list heap throwthrows try catch finally break continue instanceof

計算機基礎知識

數據結構

!1、什么是隊列、棧、鏈表

!2、什么是樹(平衡樹,排序樹,B樹,B+樹,R樹,紅黑樹)、堆(大根堆、小根堆)、圖(有向圖、無向圖、拓撲)

!3、棧和隊列的相同和不同之處

?4、棧通常采用的兩種存儲結構

%5、兩個棧實現隊列,和兩個隊列實現棧

算法

!1、排序都有哪幾種方法?

!2、會寫常用的排序算法,如快排,歸并等。

%3、各種排序算法的 時間復雜度和穩定性,重點快排。

!4、單鏈表的遍歷和逆序

!5、深度優先搜索和廣度優先搜索

?6、最小生成樹

!7、常見Hash算法,哈希的原理和代價

%8、全排列、貪心算法、KMP算法、hash算法

?9、一致性Hash算法

操作系統

?1、虛擬內存管理

?2、換頁算法

!3、進程間通信

?4、進程同步:生產者消費者問題、哲學家就餐問題、讀者寫者問題

!5、死鎖的四個必要條件,避免方法

!6、Linux的一些基本命令,如ls、tail等

計算機網絡

!1、tcp,udp區別

!2、HTTP請求和響應的全過程

!3、HTTP常見響應碼:200、301、302、404、500

!4、get和post的區別

!5、forward和redirect的區別

!6、osi七層模型

!7、tcp/ip四層模型及原理

!8、TCP和UDP區別

!9、TCP的三次握手,四次關閉

%10、丟包,粘包,

?11、容量控制,擁塞控制

?12、子網劃分

%13、IPV4和IPV6

?14、HTTPS和HTTP/2

數據庫

!1、范式

!2、數據庫事務和隔離級別

!3、為什么需要鎖,鎖定分類,鎖粒度

%4、樂觀鎖,悲觀鎖的概念及實現方式

!5、分頁如何實現(Oracle,MySql)

!6、Mysql引擎

?7、MYSQL語句優化

%8、從一張大表讀取數據,如何解決性能問題

!9、內連接連接,右連接作用及區別

!10、Statement和PreparedStatement之間的區別

%11、索引以及索引的實現(B+樹介紹、和B樹、R樹區別)

?12、什么是數據庫連接池

海量數據處理

%1、海量日志數據,如何提取出某日訪問淘寶次數最多的IP

%2、上億數據,統計其中出現次數最多的前N個數據

%3、5億個int,找出他們的中位數

%4、兩個文件,各存放50億條URL,每個URL占64字節。內存限制是4G,找出兩個文件中相同的URL

%5、有40億個不重復的unsigned int的整數,沒排過序,現在給一個數,如何快速判斷這個數是否在這40億個數當中。

?6、提示:分治、Hash映射、堆排序、雙層桶劃分、Bloom filter、bitmap、數據庫索引、mapreduce

C語言基礎

構造函數、析構函數

!1、構造函數和析構函數

%2、為什么不要在構造器中調用虛函數

%3、為什么不要在析構函數中拋出異常

c++相關

!1、面向對象的三大基本特征,五大基本原則

%2、C++繼承的內存布局

!3、C++多態的實現機制

!4、new/deletr和malloc/free的區別

其他

!1、為什么使用補碼

%2、C語言中的內存泄漏

!3、進制轉換

%4、自己編寫strlen/strcpy/strcmp

!5、C、C++以及Java之間的區別和各自優缺點

Java基礎

封裝、繼承、多態

!1、Java中實現多態的機制是什么,動態多態和靜態多態的區別

!2、接口和抽象類的區別,如何選擇

!3、Java能不能多繼承,可不可以多實現

%4、Static Nested Class和Inner Class的不同

!5、重載和重寫的區別。

!6、是否可以繼承String類

!7、構造器是否可被override?

!8、public,protected,private的區別?

集合相關

!1、列舉幾個Java中Collection類庫中的常用類

!2、List、Set、Map是否都繼承自Collection接口?存儲特點分別是什么?

!3、ArrayList、LinkedList和Vector之間的區別與聯系

!4、HashMap和Hashtable、TreeMap以及ConcurrentHashMap的區別

!5、Collection和Collections的區別

%6、其他的集合類:treeset,linkedhashmap等。

異常相關

!1、Error和Exception的區別

!2、異常的類型,什么是運行時異常

!3、final、finally和finalize的區別

%4、try-catch-finally中,如果在catch中return了,finally中的代碼還會執行么,原理是什么?

!5、列舉3個以上的RuntimeException

!6、Java中的異常處理機制的簡單原理和應用

其它

!1、String和StringBuffer、StringBuilder的區別

!2、==和equals的區別

%3、hashCode的作用,和equals方法的關系

!4、Input/OutputStream和Reader/Writer有什么區別

!5、如何在字符流和字節流之間轉換?

!6、switch可以使用那些數據類型

%7、Java的四種引用

!8、序列化與反序列化

!9、正則表達式

!10、int和Integer的區別,什么是自動裝箱和自動拆箱

Java高級

多線程

!1、進程和線程的區別

!2、并行和并發的區別和聯系

!3、同步與異步

!4、多線程的實現方式,有什么區別

!5、什么叫守護線程

%6、如何停止一個線程?

!7、什么是線程安全?

!8、synchronized和lock的區別

!9、當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?

!10、啟動一個線程是用run()還是start()?

!12、wait和sleep的區別

%13、notify和notifyAll的區別

%14、線程池的作用

%15、Java中線程池相關的類

JVM底層技術

!1、gc的概念,如果A和B對象循環引用,是否可以被GC?

%2、jvm gc如何判斷對象是否需要回收,有哪幾種方式?

!3、Java中能不能主動觸發GC

!4、JVM的內存結構,堆和棧的區別

!5、JVM堆的分代

%6、Java中的內存溢出是什么,和內存泄露有什么關系

!7、Java的類加載機制,什么是雙親委派

!8、ClassLoader的類加載方式

IO

!1、NIO、AIO和BIO 之間的區別

?2、IO和NIO常用用法

其它

?1、hashcode有哪些算法

!2、反射的基本概念,反射是否可以調用私有方法

!3、Java中范型的概念

?4、JVM啟動參數,-Xms和-Xmx

%5、代理機制的實現

!6、String s = new String(“s”),創建了幾個對象。

Java Web

Servlet

!1、JSP和Servlet的區別,Servelt的概念。

!2、Servlet的生命周期

!3、Servlet中的session工作原理 ,以及設置過期時間的方式

!4、Servlet中,filter的應用場景有哪些?

?5、JSP的動態include和靜態include

%6、web.xml中常用配置及作用

%7、Servlet的線程安全問題

MVC框架

!1、介紹幾個常用的MVC框架

!2、什么是MVC

!3、Struts中請求的實現過程

%4、Spring mvc與Struts mvc的區別

?5、Service嵌套事務處理,如何回滾

!6、struts2 中攔截器與過濾器的區別及執行順序

%7、struts2攔截器的實現原理

http相關

!1、session和cookie的區別

!2、HTTP請求中session實現原理?

%3、如果客戶端禁止Cookie能實現Session嗎?

!4、http中get和post區別

!5、redirect與forward的區別

!6、常見的web請求返回的狀態碼。404、302、301、500分別代表什么

SSH相關

?1、Hibernate/Ibatis/MyBatis之間的區別

?2、什么是OR Mapping

%3、hibernate的緩存機制、一級和二級緩存

!4、使用Spring的好處是什么,Spring的核心理念

!5、什么是AOP和IOC,實現原理是什么

!6、spring bean的初始化過程

!7、Spring的事務管理,Spring bean注入的幾種方式

%8、spring四種依賴注入方式

容器相關

!1、什么是web服務器、什么是應用服務器

!2、常用的web服務器有哪些?

?3、Tomcat和weblogic的區別

web安全

!1、什么是SQL注入,如何避免。

%2、什么是XSS攻擊,如何避免

%3、什么是CSRF攻擊,如何避免

動態代理

!1、Java的動態代理的概念

%2、Java的動態代理的實現

編碼問題

!1、常用的字符編碼

!2、如何解決中文亂碼問題

其它

%1、XML的解析方式,以及優缺點。

%2、什么是ajax,Ajax如何解決跨域問題

設計模式

%1、談一下自己了解或者熟悉的設計模式

!2、Singleton的幾種實現方式,實現一個線程安全的單例。

?3、工廠模式和抽象工廠模式之間的區別

知識的綜合能力

!1、請介紹一下一個http請求的全過程,描述的越全面越好

!2、當你在瀏覽器地址欄輸入www.taobao.com,敲下回車之后都發生了什么

工具使用

!1、知道git/svn是干什么的嗎?用過嗎

!2、知道maven/gradle是干什么的嗎?用過嗎

!3、平常使用什么IDE,為什么

!4、平常使用什么瀏覽器,為什么

!5、平常開發機器是什么操作系統的

!6、會在Linux上開發嗎。Linux常用命令會嗎

項目相關

!1、請簡單介紹一下你的這個項目

!2、你在這個項目中充當什么角色

!3、這個項目的技術選型有做過么。

!4、選擇某項技術做過哪些調研和對比

!5、這個項目中遇到的最大的問題是什么?你是如何解決的。

!6、項目中是否考慮過性能、安全性等問題

技術熱情

!1、當前Java的最新版本

!2、Java8的lambda表達式

%3、Java8的stream API

%4、Java9的模塊化

%5、Java10的局部變量類型推斷

%6、Spring Boot2.0

%7、HTTP/2

%8、會翻墻么,知道翻墻的原理嗎

!9、你最近在讀什么書

表達能力

!1、能不能簡單做一個自我介紹。

!2、能不能描述一下杭州給你的印象。用三句話概括一下。

思考方式

!1、如何估算杭州有多少軟件工程師

!2、你最近讀過的印象最深的文章是什么

!3、這篇文章中有幾個觀點,你最贊成哪一個,最不贊成哪一個

其他

!1、你對加班怎么看

!2、你還有什么問題要問我(面試官)的么

推薦閱讀

程序員面試筆試寶典

程序員面試金典

Java編程思想

Effective Java

深入理解Java虛擬機

大話數據結構

劍指Offer

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456644.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456644.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456644.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux 共享內存詳解一

共享內存段被多個進程附加的時候,如果不是所有進程都已經調用shmdt,那么刪除該共享內存段時,會出現一個臨時的不完整的共享內存段(key值是0),無法徹底刪除。只有當所有進程都調用shmdt,這個臨時…

python 魔術方法

python 魔術方法 常用魔術方法 魔術方法就是一個類的特殊方法,和普通方法唯一的不同時,普通方法需要調用!而魔術方法由系統自動調用。 1.__init__ 初始化魔術方法 觸發時機:初始化對象時觸發(不是實例化觸發&#xf…

Storm ack和fail機制再論

之前對這個的理解有些問題,今天用到有仔細梳理了一遍,記錄一下 首先開啟storm tracker機制的前提是, 1. 在spout emit tuple的時候,要加上第3個參數messageid 2. 在配置中acker數目至少為1 3. 在bolt emit的時候,要加…

Storm編程模型總結

目錄前言:1、Storm編程模型2、對應的的WordCount案例總結: 目錄 前言: 對于Storm的編程模型有必要做一個詳細的介紹(配合WC案例來介紹) 1、Storm編程模型 上圖中組件的解釋: DataSource:外…

13_觀察者模式

【觀察者模式】 也叫作發布/訂閱模式,使用較為頻繁。 定義了對象間一種一對多的依賴關系,當一個對象改變狀態時,則所有依賴于它的對象都會得到通知并被自動更新。 觀察者模式由以下幾個角色組成: * Subject 被觀察者 定義被觀察者…

【python】內建異常類的層次

內建異常類的層次 BaseException-- SystemExit-- KeyboardInterrupt-- GeneratorExit-- Exception-- StopIteration-- StopAsyncIteration-- ArithmeticError| -- FloatingPointError| -- OverflowError| -- ZeroDivisionError-- AssertionError-- AttributeError-- …

《黑客秘笈——滲透測試實用指南》—第2章2.3節 外部或內部的主動式信息收集...

本節書摘來自異步社區《黑客秘笈——滲透測試實用指南》一書中的第2章2.3節 外部或內部的主動式信息收集,作者【美】Peter Kim(彼得 基姆),更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.3 外部或內部的主動式信息收集黑客秘笈——…

Storm集群的安裝及簡單使用

目錄前言:1、集群部署的基本流程2、Storm常用操作命令(了解)3、Storm集群的進程及日志熟悉(知道對應的日志的位置出了問題知道去哪找原因)4、Storm源碼目錄分析(重要)總結: 目錄 前…

【python】錯誤、異常和文件---復習筆記

錯誤、異常和文件 1. 異常處理 錯誤指的是代碼有語法問題,無法解釋運行,必須改正后才能運行 如果代碼沒有語法問題,可以運行,但會出運行時的錯誤,例如除零錯誤,下標越界等問題,這種在運行期間…

關于使用百度ueditor時的一些問題

本來這些問題直接在百度貼吧里回答不就完事了,可是好死不死的,百度貼吧里老出現 未知錯誤&#xff0c;錯誤號&#xff1a;230274 看來還是算了,自己做一個隨筆記錄一下好了 關于我們獲取里面的內容時,老是會有一個<p>來包著,而且還老是多出來一個<br/> 這邊是這么處…

Storm的通信機制

目錄前言&#xff1a;1、Worker進程間通信原理2、Worker進程間技術(Netty、ZeroMQ)3、Worker 內部通信技術(Disruptor)總結&#xff1a; 目錄 前言&#xff1a; 這篇文章&#xff0c;博客主要介紹下Storm中Worker進程間和進程內部通信的原理和技術。整篇內容僅供了解&#x…

《Windows PowerShell實戰指南(第2版)》——1.4 搭建自己的實驗環境

本節書摘來自異步社區《Windows PowerShell實戰指南&#xff08;第2版&#xff09;》一書中的第1章&#xff0c;第1.4節&#xff0c;作者&#xff1a;【美】Don Jones&#xff08;道瓊斯&#xff09; , Jeffery Hicks&#xff08;杰弗瑞希克斯&#xff09;著&#xff0c;更多章…

已解決]求問not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9為什么不等于0呢???

not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9 ----> (not 1&#xff09;)or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9) ----> 0 or 0 or 4 or 6 or 9 ----> 0 or 4 or 6 or 9 ----> 4 or 6 or 9 4

C#外圍工具資源

1、MATH.NET數學庫:可以用于 矩陣計算方程求根插值擬合。。。2、轉載于:https://www.cnblogs.com/liq07lzucn/p/6227443.html

Storm程序的并發機制原理總結

文章目錄目錄前言&#xff1a;1、概念2、配置并行度總結&#xff1a;目錄 前言&#xff1a; 為了在以后的實踐中提高Storm程序執行的效率&#xff0c;我們還是有必要了解下對應的Storm程序的并發機制。&#xff08;哈哈&#xff0c;雖然以博主小菜鳥的水平還沒有接觸到這種提…

《無線網絡:理解和應對互聯網環境下網絡互連所帶來的挑戰》——第2章 無線生態系統 2.1無線標準化過程...

本節書摘來自華章出版社《無線網絡&#xff1a;理解和應對互聯網環境下網絡互連所帶來的挑戰》一書中的第2章&#xff0c;第2.1節&#xff0c;作者&#xff1a;&#xff08;美&#xff09;杰克L.伯班克&#xff08;Jack L. Burbank&#xff09;等著&#xff0c;更多章節內容可以…

Flask模板01

模板 在前面的示例中&#xff0c;視圖函數的主要作用是生成請求的響應&#xff0c;這是最簡單的請求。實際上&#xff0c;視圖函數有兩個作用&#xff1a;處理業務邏輯和返回響應內容。在大型應用中&#xff0c;把業務邏輯和表現內容放在一起&#xff0c;會增加代碼的復雜度和…

★數學上最大的數是多少?

數學上最大的數是多少&#xff1f; 怪羅科普 收藏(282)| 閱讀(117678)人類已經使用數長達千年之久。普遍認為&#xff0c;數的概念最先源于史前人類開始使用手指進行計數。這最終演變成符號語言&#xff0c;然后在沙子、墻壁和木頭等物體上作標記。 我們已經向前發展了一大步&…

Flask模板02

3.4 控制語句 常用的幾種控制語句&#xff1a; 模板中的if控制語句 app.route(/user) def user():user dongGereturn render_template(user.html,useruser)<html><head>{% if user %}<title> hello {{user}} </title>{% else %}<title> welc…

Storm任務提交過程及目錄樹介紹

目錄前言&#xff1a;1、Storm 任務提交的過程2、Storm相關的目錄樹總結&#xff1a; 目錄 前言&#xff1a; 對于任何一個組件來說&#xff0c;了解它相關的任務提交的過程是非常有必要的&#xff08;畢竟生產中遇到一些Bug時&#xff0c;你如果知道內部執行的過程&#xf…