主頁 > 軟體設計 > 四面阿里,三面百度,成功斬獲阿里offer!分享下經驗總結和面試問題(Java崗)

四面阿里,三面百度,成功斬獲阿里offer!分享下經驗總結和面試問題(Java崗)

2020-09-21 17:40:00 軟體設計

面試程序

最近去阿里的菜鳥國際做了一次面試交流,發現大公司對于面試者的知識結構考核非常嚴謹,可以作為我們日常作業學習的指導,雖然很多人說面試問到的東西在實際作業中很少用到,甚至有「面試造火箭,作業擰螺絲」的說法,

但從面試中,其實可以看得出來現在的公司對于面試者的知識體系要求,如果我們能在作業中就按著這樣的要求去不斷提升,那么在面試的時候必然也能游刃有余,

一般來說,阿里的面試會有兩輪的技術電面,分別交叉檢驗你的技識訓礎,后面還有兩輪的現場技術面試,主要檢驗你的專案經驗,但從知識體系的角度來看,阿里面試對于知識的考核可以分為三個層次:對于基礎知識的考核、對于專案經驗的考核、對于專案深度的考核

一、基礎知識考核

在這個層次上,主要考核你對 Java 語言本身原理的理解以及各種框架的原理理解,對于 Java 開發崗位上來說,這些知識點包括但不限于:

  • 集合 HashMap 的原理,與 Hashtable、ConcurrentHashMap 的區別?
  • Java 執行緒池的核心屬性以及處理流程
  • Java 并發包原理、Synchronized關鍵字、鎖
  • 執行緒的生命周期
  • JVM類加載機制
  • JVM記憶體模型
  • JVM分代以及垃圾回識訓制
  • Spring Bean 容器生命周期
  • Spring AOP 原理
  • Dubbo 請求流程以及原理
  • 資料庫 SQL 優化、資料庫索引、索引原理
  • ……

看到這么多的知識點,我一下子就懵逼了,這么多得看到什么時候才看得完啊?但后面我想明白了,其實你不需要全部都懂,但需要了解大部分知識點,并且在這大部分知識點中,還需要有部分是了解得非常深入的,如果達到這個水平,基本上都能通過考核,

對于基礎知識的考核多出現在阿里的前兩輪電話面試上,對于這塊,你事前把常見的面試題目看一遍,多面試幾次基本上都沒有問題

二、專案經驗的考核

當你成功通過基礎知識的考核之后,你會進入下一關的考驗:專案的理解程度,

面試官首先會讓你選擇一個你最拿手的專案,畫出架構圖,之后的一切問題都從這個架構圖觸發,當你畫出架構圖之后,你肯定需要解釋清楚每個模塊的作用,每個框架的原理以及與其他框架的區別

例如我就用我做過的一個搜索專案作為經典專案,與面試官探討

專案中用到了 Kafka 這個框架,那么面試官就會問 Kafka 和 RocketMQ 之間的區別是什么,它們兩個有什么不同?
專案中還用到了 Canal 這個阿里巴巴開源的框架,那么面試官自然會問這個東西是干嘛的,原理是怎樣的?
專案中還用到了 Zookeeper 作為協調者,那么 Zookeeper 在這個專案中的作用是什么,扮演了什么角色?
對于「專案理解程度」的考核會發生在技術面試的三四輪,在這個層次上,你必須要有一個拿得出手的專案,并且對其中的所有框架以及原理都了如指掌,否則你會被虐慘,

三、專案深度的考核

通過上一輪對于「專案理解程度」的考核后,基本上你對整個專案都會有一個全面的認識,應用層面上的問題基本上不會難倒你了,但在「專案思考深度」的考核上,就不僅僅只是考核應用層面上的問題了

還是用我做過的一個搜索專案作為例子,其中 Canal 這個開源框架暫時是沒有實作集群這個功能的,那么面試官就問了:

你如何去改造這個專案,從而實作 Canal 的集群功能?
這個時候,你會發現你懵逼了,因為你從來沒有去思考過這個問題,你所有的作業內容都是在想如何使用開源框架,而沒有進一步思考這些開源框架好不好,有什么可以改進的地方,
所以,在這一個層次上考核的是你對開源框架的思考深度,這些框架到底好不好,好在哪里,不好在哪里,有什么可以改進的地方,

對于「專案思考深度」的考核同樣發生在技術面試的三四輪,在這個層次上,你不僅要對專案本身理解足夠深刻,還要跳出專案本身,去思考開源框架本身的問題,

四、總結

當我們回過頭來總結,你會發現這三個層次都是層層遞進的,而且逐步深入,雖然這是面試中總結出來的經驗,但是這卻是一個很好的學習指引,讀者可以自己自查,看看自己現在是處于哪個層次,這樣在作業中也可以不斷地向更高層次邁進,

對于我來說,我缺乏的是對于專案的思考深度,很多時候都是業界覺得好,那我就用了,但是作為一個高級開發,甚至是一個即將成為架構師的高級開發來說,你必須知道為什么要用這些框架?它有什么問題,我們能不能做得更好?只有這樣,我們才能有所成長,

阿里面試真題:

一面(主要是jvm,并發,鎖,資料結構等基礎)

  1. 自我介紹(說說自己的擅長及拿手的技術)
  2. 說說treemap和HashMap的區別?HashMap和ConcurrentHashMap的區別?
  3. HashMap底層如何實作(JDK1.8有所改動)?
  4. 說說Hash的一致演算法?
  5. 你知道的GC演算法和回收策略有哪些?GC的機制是什么?
  6. 垃圾回收器的基本原理?是否可以立即回收記憶體?怎么樣主動的通知JVM進行垃圾回收?
  7. 雙親委派模型機制執行緒池創建的幾個核心構造引數是什么?
  8. 樂觀鎖和悲觀鎖?可重入鎖和Synchronized?他們都是可重入鎖嗎?哪個效率更高?
  9. CountDownLaunch和Cylicbarrior的區別以及分別是在哪樣場景下使用的?
  10. Http和Https的區別以及Https加密的方式?
  11. 以后的職業規劃和想法

二面(主要是資料庫,協議 , Spring等 )

  1. 自我介紹,聊下自己認為做得很好的專案!
  2. InnoDB支持的四種事務隔離級別名稱是什么?之間的區別是什么? MySQL隔離級別是什么?
  3. 說說事務的特性?講講對慢查詢的分析?
  4. 你理解的BTree機制?
  5. 有哪些MySQL常用的優化方法?6. Http請求程序, DNS決議的程序?7.三次握手和四次握手的程序?
  6. B+樹索引和Hash索引之間的區別?
  7. Spring IOC如何管理Bean之間的依賴關系,怎么樣避免回圈依賴?
  8. SpringBean創建程序中的設計模式?11.說說AOP的實作原理?
  9. Tomcat的基本架構是什么?

三面(主要是快取,并發,分布式)

  1. 自己專案中的總結的并發經驗
  2. 說說MySQL的鎖并發?加鎖的機制是什么?
  3. 高并發場景下如何防止死鎖,保證資料的一致性?
  4. 集群和負載均衡的演算法與實作?
  5. 說說分庫與分表設計?
  6. 分庫分表帶來的分布式困境與對應之策有哪些?
  7. Redis和Setnx命令使如何實作分布式鎖的?
  8. 使用Redis怎么進行異步佇列?會有什么缺點?
  9. 快取擊穿的概念和解決方案?
  10. Redis的資料結構?執行緒模型? Redis的資料淘汰機制?
  11. Redis的資料一致性問題12. MQ底層原理的實作?
  12. 阻塞佇列不用Java提供的該怎么實作?
  13. 講講負載均衡的原理?
  14. 如何實作高并發環境下的削峰、限流?

百度面試真題:

百度一面

  1. 手寫ArrayList
  2. 手寫進制轉換演算法,求出一個數的二進制數1的個數
  3. JAVA基礎 equals和==
  4. 多執行緒方式、threadlocal,各種鎖,synchronized和lock
  5. 設計模式、spring類加載方式、實體保存在哪、aop ioc、反射機制
  6. 類加載器,雙親委派模型,熱部署
  7. jvm記憶體模型,記憶體結構、堆的分代演算法、堆的磁區、gc演算法、gc程序,
  8. tcp ip 七層模型 rest介面規范 get和post區別,長度,安全,
  9. tcp ip的arp協議,兩個同一網路的主機如何獲得對方的mac地址,
  10. 負載均衡、高并發、高可用的架構
  11. mysql的引擎區別
  12. redis快取,redis的集群部署,熱備份,主從備份,主從資料庫,hash映射找到知道指定節點,
  13. 了解云計算么,了解云容器docker么,容器和虛擬機的區別

百度二面

  1. 自我介紹 專案中負責哪些 做了哪些
  2. 專案中的資料庫備份,主從資料庫、集群
  3. 資料庫的索引原理,b+樹原理,trie樹引申,二叉查找樹的原理
  4. 海量資料中查找一個單詞,分布式計算map reduce ,或者用hsah映射篩選部分結果
  5. java的抽象類和介面區別、java的hashmap,java的記憶體模型,磁區,分代垃圾回收演算法,實體、常量放在哪里,
  6. int 4個位元組,double 8個位元組,
  7. 多執行緒中的wait和sleep區別,notify的作用
  8. 設計模式了解哪些,寫一個觀察者模式,實作兩個介面,一個是主題一個是觀察者,并寫出對應方法,
  9. 寫一個生產者消費者佇列的方法,分別寫兩個類代表生產者和消費者,并且用佇列模擬其生產消費,用while回圈和waitnotify可以實作,但我忘記在佇列上加synchronize關鍵字,于是讓我再寫一題,寫的是:輸入一個字串,輸入第一個只出現一次的字符,寫出來了,
  10. tcp ip的四次揮手 子網掩碼的作用, 子網掩碼(subnet mask)又叫 網路掩碼 、 地址掩碼 、子網路遮罩,它是一種用來指明一個IP地址 的哪些位標識的是 主機所在的子網,以及哪些位標識的是主機的位掩碼,子網掩碼不能單獨存在,它必須結合IP地址一起使用,子網掩碼只有一個作用,就是將某個IP地址劃分成 網路地址 和主機地址 兩部分,
  11. 了解linux么,說一下linux的內核鎖?沒接觸過,
  12. 有沒有用過sed 使用shell腳本寫一個將文本中的字符替換掉的腳本,大概說了一下用grep || 替換,沒再問linux的

百度三面

  1. 自我介紹
  2. 負責模塊,哪些模塊,專案一的架構,我說太久了忘了,說最近的專案,
  3. 資料庫連接池用的是什么,組態檔呢,資料庫驅動怎么下載的,持久層框架呢,
  4. 為什么要用資料庫連接池,有什么好處,
  5. java的記憶體模型,變數和實體存在哪,java堆疊的作用,java的堆存什么,方法區存什么,
  6. java的分代回收,
  7. 專案如何部署到云主機上,有什么速度提升,為什么有提升,答主要是設備性能和帶寬,
  8. tomcat的配置,堆得初始大小是多少,達不知道,
  9. 問遇到過什么難題,
  10. 問在遇到問題時候的辦法,
  11. 抗壓能力
  12. 優缺點
  13. 接受加班,
  14. 遇到作業問題,同事不配合怎么辦,
  15. 快速上手作業的辦法,
  16. 平時學習的方法,舉幾點,
  17. 職業規劃

最后
感謝各位程式員同仁閱讀,

感謝支持,我會更加努力分享,喜歡的朋友可以關注下,祝大家面試通過拿到心儀offer,
面試題答案決議,直接點擊 這里,對,就是這里,回復暗號;CS 即可免費領取,含有各種面試題以及答案決議,Java進階架構知識點資源,包含但不限于(分布式架構、高并發、Jvm性能調優、Spring,MyBatis,Nginx原始碼分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等知識點決議)也有各大互聯網公司人才,可以交流討論共同進步,

更多筆記分享

最全最新面試檔案分享,先一步了解大型互聯網面試題及答案,對面試檔案總結感興趣可以直接點擊 這里,對,就是這里,回復暗號;CS 即可免費領取(整理不易)大型互聯網企業面試答案獲取詳情!

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/98686.html

標籤:其他

上一篇:全堆疊專案-寵物樂園

下一篇:Flume監控之Ganglia安裝與簡單實踐

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more