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

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

2020-09-21 18:05:46 前端設計

面試程序

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

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

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

一、基礎知識考核

在這個層次上,主要考核你對 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/qianduan/98816.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)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more