上個月,哥們從某小廠離職,轉投阿里雲,簡歷優秀,很順利地拿到了面試通知,但以後的進展卻讓哥們懷疑人生了,或者說讓哥們懵逼的是,面試阿里雲竟然第一面就被吊打?讓哥們開始懷疑本身,是否是這些年工做下來,本身沒有一丁點的進步呢?程序員
幸運的是,通過他朋友推薦,去面試了華爲,面試華爲的過程極爲順利,很快就拿到了offer。這讓哥們更弄不懂了,4面拿華爲offer的水平,面試阿里雲竟然一面就被吊打?面試
索性,哥們想分享一下此次的面試經歷,讓各位老鐵好好幫他參考參考,出一出主意!redis
另外,我下文還整理了一些哥們的複習資料,有須要的朋友轉發並關注,加我VX【tkzl6666】便可得到免費領取方式!算法
此次一面感受是在打心理戰,哥們本身的內心防線基本是被擊潰,面到懷疑人生的程度,因此過程感受不是太好,不少題哥們本身也感受沒答好,要麼答得「缺胳膊少腿」,要麼就是「多此一舉」。spring
先是聊項目,從項目的架構設計到部署流程。sql
Java容器有哪些?哪些是同步容器,哪些是併發容器?數據庫
ArrayList和LinkedList的插入和訪問的時間複雜度?編程
Java反射原理, 註解原理?緩存
新生代分爲幾個區?使用什麼算法進行垃圾回收?爲何使用這個算法?安全
HashMap在什麼狀況下會擴容,或者有哪些操做會致使擴容?
HashMap push方法的執行過程?
HashMap檢測到hash衝突後,將元素插入在鏈表的末尾仍是開頭?
1.8還採用了紅黑樹,講講紅黑樹的特性,爲何人家必定要用紅黑樹而不是AVL、B樹之類的?
https和http區別,有沒有用過其餘安全傳輸手段?
線程池的工做原理,幾個重要參數,而後給了具體幾個參數分析線程池會怎麼作,最後問阻塞隊列的做用是什麼?
Linux怎麼查看系統負載狀況?
請詳細描述springmvc處理請求全流程?
講一講AtomicInteger,爲何要用CAS而不是synchronized?
查詢中哪些狀況不會使用索引?
數據庫索引,底層是怎樣實現的,爲何要用B樹索引?
Mysql主從同步的實現原理?
MySQL是怎麼用B+樹?
談談數據庫樂觀鎖與悲觀鎖?
有使用過哪些NoSQL數據庫?MongoDB和Redis適用哪些場景?
描述分佈式事務之TCC服務設計?
Redis和memcache有什麼區別?Redis爲何比memcache有優點?
考慮redis的時候,有沒有考慮容量?大概數據量會有多少?
談談分佈式鎖、以及分佈式全局惟一ID的實現比較?
集羣監控的時候,重點須要關注哪些技術指標?這些指標如何優化?
從千萬的數據到億級的數據,會面臨哪些技術挑戰?你的技術解決思路?
最近兩年遇到的最大的挫折,從挫折中學到了什麼?
最近有沒有學習過新技術?
華爲面試過程很順,一面問得比較基礎,因此哥們整我的都還挺自信的一個狀態,面試官也全程是一個比較「和善」的問題方式,因此比較輕鬆,所以面試得順利,拿offer也快。如下是哥們華爲4面的技術題,不包括HR面。
華爲技術一面:
簡單說一下面向對象的特徵以及六大原則
談談final、finally、finalize的區別
Java中==、equals與hashCode的區別和聯繫
談談Java容器ArrayList、LinkedList、HashMap、HashSet的理解,以及應用場景
談談線程的基本狀態,其中的wait() sleep() yield()方法的區別。
JVM性能調優的監控工具瞭解那些?
簡單談談JVM內存模型,以及volatile關鍵字
垃圾收集器與內存分配策略
垃圾收集算法
MySQL幾種經常使用的存儲引擎區別
數據庫的隔離級別
5億整數的大文件,怎麼排?
華爲技術二面:
Java內存模型
full gc怎麼觸發?
gc算法
JVM回收策略
ClassLoader原理和應用
高吞吐量的話用哪一種gc算法
ConcurrentHashMap和HashMap
volatile的底層如何實現,怎麼就能保住可見性了?
有參與過開源的項目嗎?
線程池原理,拒絕策略,核心線程數
1億個手機號碼,判斷重複
線程之間的交互方式有哪些?有沒有線程交互的封裝類 (join)?
華爲技術三面:
兩次點擊,怎麼防止重複下訂單?
數據庫表設計,索引
Redis的緩存淘汰策略、更新策略
dubbo、netty、RPC介紹原理
限流算法
zk掛了怎麼辦?
分佈式鎖的實現方式,zk實現和Redis實現的比較
秒殺場景設計,應付忽然的爆發流量
分佈式數據一致性
一致性哈希
消息隊列原理介紹
註解的原理
數據庫原理,數據庫中間件,索引優化
ioc原理、aop原理和應用
大數據相關,MapReduce
Docker的原理
實際上,哥們並非一個幸運的人,而是一個努力的人,今天的這些,也全是靠哥們的努力得來的,儘管阿里雲一面就涼,但能進入華爲,也算是哥們多年的累積,如下是哥們分享的我的的一個學習方法和經驗總結。
如下所展現的所有資料,都可以避免費分享 轉發+關注,而後加我VX【tkzl6666】免費領取
(1)多刷題
本身多刷一些面試題是很是重要的,即便是在本身不須要面試的狀況下,也要常常瞭解如今的大廠小廠面試都會問一些什麼?如今比較流行的技術是什麼等等諸如此類。那麼哥們是如何刷題的呢?刷題主要分爲Java技術以及算法兩大類,蒐集了目前比較新的一些題冊,包括【Java核心知識】以及【算法刷題】,如算法方面就有LeetCode。
Java 面試必備核心知識點:
算法刷題LeetCode:
(2)多看看技術牛的實戰書
實際上不少人目前的一個狀態是缺少實戰經驗,或者說是不知道該如何上手實戰。那麼,看一些技術比較過硬的大牛寫的實戰書籍對本身是頗有好處的,多少可以學習到一些實戰經驗。目前我手上整理到的實戰書籍也算是比較全面,包括Spring全家桶、JVM、併發編程技術、Redis相關、MySQL調優、Tomcat、ZooKeeper等高級技術。
(3)多交流,多思考
最後要強調的重點就是——多交流,多思考。如今不少程序員陷入一個怪圈,成天只會在辦公室裏機械的工做,實際上程序員要想有很大很明顯的進步,交流是少不了的。那麼怎麼結識比本身厲害的技術牛呢?實際上渠道有不少,哥們我的的作法是:①看一些技術直播,在直播間交友;②加一些技術性的交流羣,多交流問題;③參加一些線下活動,如面基、研討會等等。
學習如攀登,雖然有身心的疲憊,但更有沿途的優美風光,更不管登頂以後的極目遠眺。以後,你總會感嘆曾經的付出是值得的。
以上所展現的面試題也好、學習資料也罷,都可以避免費分享給你們,有須要的老鐵請轉發+關注,而後加我VX【tkzl6666】便可。