本文來自粉絲投稿,原做者:紅鼻子熊。 版權歸Hollis全部。java
OFFER:京東2018校招物流研發崗linux
我的:211小碩nginx
面試時間:2017年秋天面試
總體:三輪面試,前兩輪爲技術面試,最後爲hr面試redis
面試時間較長,回答速度也較快,全部問題都進行了完整的回答。形式爲電話面試,都是基礎,難度通常,沒關係張,回答知識點便可。算法
內容主要包括jvm相關,網絡知識(TCP/IP,DNS),JDK源碼(HashMap, ArrayList, HashTable等)spring
這部分主要考的是知識點的串聯能力,面試官提出一個問題時,要把該問題相關的知識點都羅列出來(在說以前能夠詢問面試官是否須要詳細講述該知識點)。sql
參考書籍:深刻理解Java虛擬機-周志明 神書!神書!神書!建議多刷幾遍,書中的全部知識點能夠經過JAVA運行時區域和JAVA的內存模型與線程兩個大模塊羅列徹底。數據庫
常考內容有:GC,JAVA線程實現方式,volatile底層原理,線程安全,鎖與CAS等數組
回答:運行時數據區總體分爲兩類 線程私有和線程共享。
線程私有的包括:
程序計數器
虛擬機棧
線程共享的包括:
堆
方法區
大體思路: 要進行垃圾回收,首先要判斷一個對象是否活着,這就引出了兩種方法…
引用計數法和可達性分析法
gc roots 類型
引用類型
兩次標記過程
垃圾回收算法
內存分配策略
觸發垃圾回收
垃圾回收器
也會回收方法區
回答:要進行垃圾回收,首先要判斷對象是否存活,引出了兩個方法:
引用計數法
可達性分析法
在可達性分析過程當中,對象引用類型會對對象的生命週期產生影響,JAVA中有這幾種類型的引用:
一個對象真正不可用,要經歷兩次標記過程:
JAVA中的垃圾回收算法有:
觸發GC又涉及到了內存分配規則: (對象主要分配在Eden,若啓動了本地線程分配緩衝,將優先在TLAB上分配)
垃圾收集器:
Serial(串行收集器)
ParNew
Parallel Scavenge
SerialOld
Parallel Old
CMS
G1
GC自適應調節策略 Parallel Scavenge收集器有一個參數-XX:+UseAdaptiveSizePolicy。當這個參數打開以後,就不須要手工指定新生代的大小、Eden與Survivor區的比例、晉升老年代對象年齡等細節參數了,虛擬機會根據當前系統的運行狀況收集性能監控信息,動態調整這些參數以提供最合適的停頓時間或者最大的吞吐量,這種調節方式稱爲GC自適應的調節策略(GC Ergonomics)。
(垃圾回收器部分重點講CMS和G1)
最後提一下也會回收方法區:
上面的知識點在你多刷幾遍書,腦中造成相應的知識網後能很全面的說出來。
網絡知識在面試中很是重要,尤爲是TCP,DNS,HTTP等知識點。
該部分個人蔘考書籍是:圖解HTTP,圖解TCP/IP(對於開發來講,這兩本書在網絡方面的講解應該夠用了),以及相關博客。
回答該類問題時,依然要從面試官提到的問題進行擴散,把相關的問題本身拋出來進行講述(在拋出講述時能夠詢問面試官是否須要進行詳細的講解)
對於該問題,能夠直接關聯TCP四次分手進行回答。如果當場面試,能夠在紙上畫出客戶端和服務端的TCP狀態序列
(圖片來源:當時看的博客,但沒能記住具體的博客地址)
而後本身能夠拋出相關的問題進行回答,如:
爲何不採用兩次握手,SYN半鏈接攻擊,TIME_WAIT數量太多怎麼辦,爲何鏈接的時候是3次握手,關閉的時候是4次分手,爲何TIME_WAIT狀態須要通過2MSL(最大報文段生存時間)才能回到CLOSE狀態等等問題(這些問題在網上都有講解,這裏就不贅述了)。
這部分主要在於本身平時的積累,能夠跟着相關的博客看源碼。常考的內容有String,集合框架,foreach(Iterator及fail-fast機制)等內容。
這裏就不詳細說了,大體思路是jdk7和jdk8的實現原理及區別(重點有實現的數據結構,存儲單元從Entry到Node的轉變,加載因子,何時擴容,jdk1.8擴容的具體實現方式等等),HashMap和HashTable的區別,HahsMap和HashSet的關係。要結合源碼說。
重點是底層實現方式,擴容機制,以及LinkedList的底層實現方式;它們之間的區別。要結合源碼說
面試時間不長,個別問題回答的有些底虛。主要考察的是知識面的廣度和對技術的熱愛程度,以及對作過項目的熟悉程度。仍是那句話,坦誠地回答問題,不會就是不會,若是僞裝會可是被接下來地問題問倒的話,那就沒戲了。
每一個人的項目都不一樣,只列舉幾個問題
回答:用的是mybatis,sql語句中用#{},#{}表示一個佔位符號,經過#{}能夠實現preparedStatement向佔位符中設置值,jdbc有個預編譯的過程能夠有效預防sql注入,儘可能不用${},它是個拼接符,用來拼接sql字符串。
而後又問了aop的實現原理(jdk動態代理和cglib字節碼加強,在回答時要說出底層源碼)
答:分佈式,實習時雖然本身作的是企業後臺,並無涉及到不少分佈式的內容,可是會常常從同事那裏瞭解一些分佈式的技術感受頗有趣
答:進行反向代理和負載均衡的nginx,及實現高可用的keepalived+nginx;內存數據庫redis及它的基本數據類型和持久化方式;用於作註冊中心的zookeeper和服務治理的dubbo;防止用戶重複登陸的單點登陸;分佈式的文件存儲系統fastdfs;頁面靜態化處理的freemarker;以及用於搜索的solr(這部分因爲有些技術本身只是會用,不瞭解底層,因此說的吞吞吐吐,很沒底氣,其實不必,大大方方說出來後再說明本身瞭解的程度便可)
答:spring源碼不太瞭解,另外linux方面有些薄弱,正在補充相關知識。(能夠加上本身目前正在看哪些書)
答:不太清楚,還沒了解(心裏狀態:臥槽,jdk9何時出來的) (這個問題能夠很好的瞭解到求職者對技術的熱愛程度,平時能夠多關注技術的發展方向,版本迭代。這方面能夠經過關注一些優質的公衆號:如Hollis)
答:多是第一份實習工做的影響吧, 面試官:還有呢? 我:我也說不清楚,就是想去互聯網公司(說完以後就想宰了本身)
hr面重要的也是真誠,還有就是表達好本身想去該公司及對該公司的瞭解
答:1個,可是已經拒了
答:由於它不是互聯網公司
答:工資高是一方面,另外在互聯網公司中通常能夠更快接觸到新的技術
答:由於京東是我關注好久的公司,從京東第一次作秋招視頻直播就開始關注了。首先京東是一家互聯網公司,其次京東近些年的發展有目共睹,並且京東正在向技術公司轉型,相信本身能夠學到不少東西。
答:壓力大時喜歡經過吃東西來排解壓力,因此又要減肥什麼的很麻煩
答:喜歡熬夜
答:emmmm,哎呀,想不起來了 (其實,關於優勢和缺點的問題應該好好總結一下,否則問的當時容易懵逼) 還有幾個問題不太記得了,大概就是實習時本身意見和同事不同時是怎麼解決的。對於這種問題,最好舉個實際的例子。
其實網上的大多數面經已經說的很清楚,必定要造成本身的知識樹,若是僅僅想經過看面經來經過面試,會很難。本身日常必定要積累知識,把知識點分類進行記錄,在面試過程當中主動說出面試官所提問題的關聯問題的解決方案可以加分,體現本身的知識串聯能力。關於要積累哪些知識,Hollis在他的java成神之路已經寫的很詳細。
書就不詳細寫了,畢竟本身看的書不算多。
from: https://www.hollischuang.com/archives/2333