寒冬下的溫暖,一份“熱騰騰”的面經分享—致敬疫情下還在奮鬥中的碼農

有贊雲面經

有贊雲的電話面,題目比較簡單。(更新一下,樓主一年經驗,社招java崗位)

  1. 出於什麼樣的考慮,對系統進行了重構

  2. 有了解過領域模型相關知識嗎

  3. 項目中最大的亮點,或者說項目中最大的難題是怎麼解決的

  4. 索引失效場景有哪些

  5. Dubbo服務暴露過程

  6. Dubbo的spi和jdk的什麼區別

  7. Rabbitmq和kafka區別

  8. Kafka適合什麼場景,項目中是什麼場景

  9. Rabbit如何保證消息不丟失

  10. Zk滿足了CAP哪些特性

  11. 項目中緩存使用場景,雙寫一致性怎麼保證的

  12. 緩存穿透,擊穿,雪崩場景,怎麼解決

  13. HashMap初始化10000,如何擴容

  14. Spring循環依賴有幾種,如何解決


百度現場面試:JVM+算法+Redis+數據庫!(三面)

百度一面(現場)

  • 自我介紹
  • Java中的多態
  • 爲什麼要同時重寫hashcode和equals
  • Hashmap的原理
  • Hashmap如何變線程安全,每種方式的優缺點
  • 垃圾回收機制
  • Jvm的參數你知道的說一下
  • 設計模式瞭解的說一下啊
  • 手撕一個單例模式

算法題目

  • 手撕算法:反轉單鏈表
  • 手撕算法:實現類似微博子結構的數據結構,輸入一系列父子關係,輸出一個類似微博評論的父子結構圖
  • 手寫java多線程
  • 手寫java的soeket編程,服務端和客戶端
  • 手撕算法: 爬樓梯,寫出狀態轉移方程
  • 智力題:時針分針什麼時候重合

百度二面(現場)

  • 自我介紹
  • 項目介紹
  • 服務器如何負載均衡,有哪些算法,哪個比較好,一致性哈希原理,怎麼避免DDOS攻擊請求打到少數機器。
  • TCP連接中的三次握手和四次揮手,四次揮手的最後一個ack的作用是什麼,爲什麼要time wait,爲什麼是2msl。
  • 數據庫的備份和恢復怎麼實現的,主從複製怎麼做的,什麼時候會出現數據不一致,如何解決。
  • Linux查看cpu佔用率高的進程
  • 手撕算法:給定一個數字三角形,找到從頂部到底部的最小路徑和。每一步可以移動到下面一行的相鄰數字上。
  • 然後繼續在這個問題上擴展
  • 求出最短那條的路徑
  • 遞歸求出所有的路徑
  • 設計模式講一下熟悉的
  • 會不會濫用設計模式
  • 多線程條件變量爲什麼要在while體裏
  • 你遇到什麼挫折,怎麼應對和處理

百度三面(現場)

  • 自我介紹
  • 項目介紹
  • Redis的特點
  • Redis的持久化怎麼做,aof和rdb,有什麼區別,有什麼優缺點。
  • Redis使用哨兵部署會有什麼問題,我說需要擴容的話還是得集羣部署。
  • 說一下JVM內存模型把,有哪些區,分別幹什麼的
  • 說一下gc算法,分代回收說下
  • MySQL的引擎講一下,有什麼區別,使用場景呢
  • 分佈式事務瞭解麼
  • 反爬蟲的機制,有哪些方式

阿里中間件(四面)

Java中間件一面

技術一面考察範圍:

  • 重點問了Java線程鎖:synchronized 和ReentrantLock相關的底層實現
  • 線程池的底層實現以及常見的參數
  • 數據結構基本都問了一遍:鏈表、隊列等
  • Java內存模型:常問的JVM分代模型,以及JDK1.8後的區別,最後還問了JVM相關的調優參數
  • 分佈式鎖的實現比較

技術一面題目:

  • 1:自我介紹
  • 2:擅長哪方面的技術?
  • 3;java有哪些鎖中類?(樂觀鎖&悲觀鎖、可重入鎖&Synchronize等)。
  • 4:比較重要的數據結構,如鏈表,隊列,棧的基本原理及大致實現
  • 5:J.U.C下的常見類的使用。Threadpool的深入考察;blockingQueue的使用
  • 6:Java內存分代模型,GC算法,JVM常見的啓動參數;CMS算法的過程。
  • 7:Volatile關鍵字有什麼用(包括底層原理)
  • 8:線程池的調優策略
  • 9:Spring cloud的服務註冊與發現是怎麼設計的?
  • 10:分佈式系統的全局id如何實現
  • 11:分佈式鎖的方案,redis和zookeeper那個好,如果是集羣部署,高併發情況下那個性能更好。

Java中間件二面

技術二面考察範圍:

  • 問了項目相關的技術實現細節
  • 數據庫相關:索引、索引底層實現、mysql相關的行鎖、表鎖等
  • redis相關:架構設計、數據一致性問題
  • 容器:容器的設計原理等

技術二面題目:

  • 參與的項目,選一個,技術難度在哪裏?
  • Collections.sort底層排序方式
  • 負載均衡的原理
  • 設計模式與重構,談談你對重構的理解
  • 談談redis相關的集羣有哪些成熟方案?
  • 再談談一致hash算法(redis)?
  • 數據庫索引,B+樹的特性和建樹過程
  • Mysql相關的行鎖,表鎖;樂觀鎖,悲觀鎖
  • 談談多線程和併發工具的使用
  • 談談redis的架構和組件
  • Redis的數據一致性問題(分佈式多節點環境&單機環境)
  • Docker容器

Java中間件三面

技術三面考察範圍

  • 主要談到了高併發的實現方案
  • 以及中間件:redis、rocketmq、kafka等的架構設計思路
  • 最後問了平時怎麼提升技術的

技術三面題目

  • 高併發情況下,系統是如何支撐大量的請求的?
  • 接着上面的問題,延伸到了中間件,kafka、redis、rocketmq、mycat等設計思路和適用場景等
  • 最近上過哪些技術網站;最近再看那些書。
  • 工作和生活中遇見最大的挑戰,怎麼去克服?
  • 未來有怎樣的打算
  • Java中間件四面

最後,你懂的,主要就是HR走流程了,主要問了未來的職業規劃。

螞蟻中間件團隊面試題

螞蟻中間件一面:

  • 自我介紹
  • JVM垃圾回收算法和垃圾回收器有哪些,最新的JDK採用什麼算法。
  • 新生代和老年代的回收機制。
  • 講一下ArrayList和linkedlist的區別,ArrayList與HashMap的擴容方式。
  • Concurrenthashmap1.8後的改動。
  • Java中的多線程,以及線程池的增長策略和拒絕策略瞭解麼。
  • Tomcat的類加載器瞭解麼
  • Spring的ioc和aop,Springmvc的基本架構,請求流程。
  • HTTP協議與Tcp有什麼區別,http1.0和2.0的區別。
  • Java的網絡編程,講講NIO的實現方式,與BIO的區別,以及介紹常用的NIO框架。
  • 索引什麼時候會失效變成全表掃描
  • 介紹下分佈式的paxos和raft算法

螞蟻中間件二面

  • 你在項目中怎麼用到併發的。
  • 消息隊列的使用場景,談談Kafka。
  • 你說了解分佈式服務,那麼你怎麼理解分佈式服務。
  • Dubbo和Spring Clound的區別,以及使用場景。
  • 講一下docker的實現原理,以及與JVM的區別。
  • MongoDB、Redis和Memcached的應用場景,各自優勢
  • MongoDB有事務嗎
  • Redis說一下sorted set底層原理
  • 講講Netty爲什麼併發高,相關的核心組件有哪些

螞蟻中間件三面

  • 完整的畫一個分佈式集羣部署圖,從負載均衡到後端數據庫集羣。
  • 分佈式鎖的方案,Redis和Zookeeper哪個好,如果是集羣部署,高併發情況下哪個性能更好。
  • 分佈式系統的全局id如何實現。
  • 數據庫萬級變成億級,你如何來解決。
  • 常見的服務器雪崩是由什麼引起的,如何來防範。
  • 異地容災怎麼實現
  • 常用的高併發技術解決方案有哪些,以及對應的解決步驟。

2021年頭條抖音Java (三面)

一面:

  • hashmap,怎麼擴容,怎麼處理數據衝突?怎麼高效率的實現數據遷移?
  • Linux的共享內存如何實現,大概說了一下。
  • socket網絡編程,說一下TCP的三次握手和四次揮手
  • 同步IO和異步IO的區別?
  • Java GC機制?GC Roots有哪些?
  • 紅黑樹講一下,五個特性,插入刪除操作,時間複雜度?
  • 快排的時間複雜度,最壞情況呢,最好情況呢,堆排序的時間複雜度呢,建堆的複雜度是多少

二面:

  • 自我介紹,主要講講做了什麼和擅長什麼
  • 設計模式瞭解哪些?
  • AtomicInteger怎麼實現原子修改的?
  • ConcurrentHashMap 在Java7和Java8中的區別?爲什麼Java8併發效率更好?什麼情況下用HashMap,什麼情況用ConcurrentHashMap?
  • redis數據結構?
  • redis數據淘汰機制?

三面(約五十分鐘):

  • mysql實現事務的原理(MVCC)
  • MySQL數據主從同步是如何實現的?
  • MySQL索引的實現,innodb的索引,b+樹索引是怎麼實現的,爲什麼用b+樹做索引節點,一個節點存了多少數據,怎麼規定大小,與磁盤頁對應。
  • 如果Redis有1億個key,使用keys命令是否會影響線上服務?
  • Redis的持久化方式,aod和rdb,具體怎麼實現,追加日誌和備份文件,底層實現原理的話知道麼?
  • 遇到最大困難是什麼?怎麼克服?
  • 未來的規劃是什麼?
  • 你想問我什麼?

美團內推(一面+二面+三面)面試題目

美團一面(電話)

  • 自我介紹
  • 項目介紹
  • Redis介紹
  • 瞭解redis源碼麼
  • 瞭解redis集羣麼
  • Hashmap的原理,增刪的情況後端數據結構如何位移
  • hashmap容量爲什麼是2的冪次
  • hashset的源碼
  • object類你知道的方法
  • hashcode和equals
  • 你重寫過hashcode和equals麼,要注意什麼
  • 假設現在一個學生類,有學號和姓名,我現在hashcode方法重寫的時候,只將學號參與計算,會出現什麼情況?
  • 往set裏面put一個學生對象,然後將這個學生對象的學號改了,再put進去,可以放進set麼?並講出爲什麼
  • Redis的持久化?有哪些方式,原理是什麼?
  • 講一下穩定的排序算法和不穩定的排序算法
  • 講一下快速排序的思想

美團二面(現場)

  • 自我介紹
  • 講一下數據的acid
  • 什麼是一致性
  • 什麼是隔離性
  • Mysql的隔離級別
  • 每個隔離級別是如何解決
  • Mysql要加上nextkey鎖,語句該怎麼寫
  • Java的內存模型,垃圾回收
  • 線程池的參數
  • 每個參數解釋一遍
  • 然後面試官設置了每個參數,給了是個線程,讓描述出完整的線程池執行的流程
  • Nio和IO有什麼區別
  • Nio和aio的區別
  • Spring的aop怎麼實現
  • Spring的aop有哪些實現方式
  • 動態代理的實現方式和區別
  • Linux瞭解麼
  • 怎麼查看系統負載
  • Cpu load的參數如果爲4,描述一下現在系統處於什麼情況
  • Linux,查找磁盤上最大的文件的命令
  • Linux,如何查看系統日誌文件
  • 手撕算法:leeetcode原題 22,Generate Parentheses,給定 n 對括號,請寫一個函數以將其生成新的括號組合,並返回所有組合結果。

美團三面(現場)

三面沒怎麼問技術,問了很多技術管理方面的問題

  • 自我介紹
  • 項目介紹
  • 怎麼管理項目成員
  • 當意見不一致時,如何溝通並說服開發成員,並舉個例子
  • 怎麼保證項目的進度
  • 數據庫的索引原理
  • 非聚簇索引和聚簇索引
  • 索引的使用注意事項
  • 聯合索引
  • 從底層解釋最左匹配原則
  • Mysql對聯合索引有優化麼?會自動調整順序麼?哪個版本開始優化?
  • Redis的應用
  • Redis的持久化的方式和原理
  • 技術選型,一個新技術和一個穩定的舊技術,你會怎麼選擇,選擇的考慮有哪些
  • 說你印象最深的美團點評技術團隊的三篇博客
  • 最近在學什麼新技術
  • 你是怎麼去接觸一門新技術的
  • 會看哪些書
  • 怎麼選擇要看的書

京東4面(Java研發)

一面(基礎面:約1小時)

  • 自我介紹,主要講講做了什麼和擅長什麼
  • springmvc和spring-boot區別
  • @Autowired的實現原理
  • Bean的默認作用範圍是什麼?其他的作用範圍?
  • 索引是什麼概念有什麼作用?MySQL裏主要有哪些索引結構?哈希索引和B+樹索引比較?
  • Java線程池的原理?線程池有哪些?線程池工廠有哪些線程池類型,及其線程池參數是什麼?
  • hashmap原理,處理哈希衝突用的哪種方法?
  • 還知道什麼處理哈希衝突的方法?
  • Java GC機制?GC Roots有哪些?
  • Java怎麼進行垃圾回收的?什麼對象會進老年代?垃圾回收算法有哪些?爲什麼新生代使用複製算法?
  • HashMap的時間複雜度?HashMap中Hash衝突是怎麼解決的?鏈表的上一級結構是什麼?Java8中的HashMap有什麼變化?紅黑樹需要比較大小才能進行插入,是依據什麼進行比較的?其他Hash衝突解決方式?
  • hash和B+樹的區別?分別應用於什麼場景?哪個比較好?
  • 項目裏有個數據安全的,aes和md5的區別?詳細點

二面(問數據庫較多)

  • 自我介紹
  • 爲什麼MyISAM查詢性能好?
  • 事務特性(acid)
  • 隔離級別
  • SQL慢查詢的常見優化步驟?
  • 說下樂觀鎖,悲觀鎖(select for update),並寫出sql實現
  • TCP協議的三次握手和四次揮手過程?
  • 用到過哪些rpc框架
  • 數據庫連接池怎麼實現
  • Java web過濾器的生命週期

三面(綜合面;約一個小時)

  • 自我介紹。
  • ConcurrentHashMap 在Java7和Java8中的區別?爲什麼Java8併發效率更好?什麼情況下用HashMap,什麼情況用ConcurrentHashMap?
  • 加鎖有什麼機制?
  • ThreadLocal?應用場景?
  • 數據庫水平切分,垂直切分的設計思路和切分順序
  • Redis如何解決key衝突
  • soa和微服務的區別?
  • 單機系統演變爲分佈式系統,會涉及到哪些技術的調整?請從前面負載到後端詳細描述。
  • 設計一個秒殺系統?

四面(HR面)

  • 1.你自己最大優勢和劣勢是什麼
  • 2.平時遇見過什麼樣的挑戰,怎麼去克服的
  • 3.工作中遇見了技術解決不了的問題,你的應對思路?
  • 4.你的興趣愛好?
  • 5.未來的職業規劃是什麼?

【頭條Java後臺3面】— (20年十二月份)

頭條一面

  • 1.講講jvm運行時數據庫區
  • 2.講講你知道的垃圾回收算法
  • 3.jvm內存模型jmm
  • 4.內存泄漏與內存溢出的區別
  • 5.select、epool 的區別?底層的數據結構是什麼?
  • 6.mysql數據庫默認存儲引擎,有什麼優點
  • 7.優化數據庫的方法,從sql到緩存到cpu到操作系統,知道多少說多少
  • 8.什麼情景下做分表,什麼情景下做分庫
  • 9.linkedList與arrayList區別 適用場景
  • 10.array list是如何擴容的
  • 11.volatile 關鍵字的作用?Java 內存模型?
  • 12.java lock的實現,公平鎖、非公平鎖
  • 13.悲觀鎖和樂觀鎖,應用中的案例,mysql當中怎麼實現,java中的實現

頭條二面

  • Java 內存分配策略?多個線程同時請求內存,如何分配?
  • Redis 底層用到了哪些數據結構?使用 Redis 的 set 來做過什麼?
  • Redis 使用過程中遇到什麼問題?搭建過 Redis 集羣嗎?
  • 如何分析“慢查詢”日誌進行 SQL/索引 優化?
  • MySQL 索引結構解釋一下?(B+ 樹)
  • MySQL Hash 索引適用情況?舉下例子?

頭條三面

  • 如何保證數據庫與redis緩存一致的
  • Redis 的併發競爭問題是什麼?如何解決這個問題?瞭解 Redis 事務的 CAS 方案嗎?
  • 如何保證 Redis 高併發、高可用?
  • Redis 的主從複製原理,以及Redis 的哨兵原理?
  • 如果讓你寫一個消息隊列,該如何進行架構設計啊?說一下你的思路。
  • MySQL數據庫主從同步怎麼實現?
  • 秒殺模塊怎麼設計的,如何壓測,抗壓手段

【今日頭條Java後臺研發三面】—(20年金九銀十期間)

一面

  • concurrent包下面用過哪些?
  • countdownlatch功能實現
  • synchronized和lock區別,重入鎖
  • thread和runnable的區別
  • AtomicInteger實現原理(CAS自旋)
  • java併發sleep與wait、notify與notifyAll的區別
  • 如何實現高效的同步鏈表
  • java都有哪些加鎖方式(synchronized、ReentrantLock、共享鎖、讀寫鎖等)
  • 設計模式(工廠模式、單例模式(幾種情況)、適配器模式、裝飾者模式)
  • maven依賴樹,maven的依賴傳遞,循環依賴

二面

  • synchronized和reentrantLock的區別,synchronized用在代碼快、方法、靜態方法時鎖的都是什麼?
  • 介紹spring的IOC和AOP,分別如何實現(classloader、動態代理)
  • JVM的內存佈局以及垃圾回收原理及過程講一下,講一下CMS垃圾收集器垃圾回收的流程,以及CMS的缺點
  • redis如何處理分佈式服務器併發造成的不一致
  • OSGi的機制
  • spring中bean加載機制,bean生成的具體步驟,ioc注入的方式
  • spring何時創建applicationContext
  • listener是監聽哪個事件?
  • 介紹ConcurrentHashMap原理,用的是哪種鎖,segment有沒可能增大?
  • 解釋mysql索引、b樹,爲啥不用平衡二叉樹、紅黑樹
  • Zookeeper如何同步配置

三面

  • Java線程池ThreadPoolEcecutor參數,基本參數,使用場景
  • MySQL的ACID講一下,延伸到隔離級別
  • dubbo的實現原理,說說RPC的要點
  • GC停頓原因,如何降低停頓?
  • JVM如何調優、參數怎麼調?
  • 如何用工具分析jvm狀態(visualVM看堆中對象的分配,對象間的引用、是否有內存泄漏,jstack看線程狀態、是否死鎖等等)
  • 描述一致性hash算法(Redis)
  • 分佈式雪崩場景如何避免?
  • 再談談消息隊列


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章