前言:
馬上就又到了跳槽的好季節(jié),不知道你是不是已經(jīng)安于現(xiàn)狀,還是蓄勢待發(fā)呢?最近我呢又在搜羅整理大廠的面試題,來來來!我分你一份!加油!
阿里中間件(四面)
Java中間件一面
技術一面考察范圍:
重點問了Java線程鎖:synchronized 和ReentrantLock相關的底層實現(xiàn)
線程池的底層實現(xiàn)以及常見的參數(shù)
數(shù)據(jù)結(jié)構(gòu)基本都問了一遍:鏈表、隊列等
Java內(nèi)存模型:常問的JVM分代模型,以及JDK1.8后的區(qū)別,最后還問了JVM相關的調(diào)優(yōu)參數(shù)
分布式鎖的實現(xiàn)比較技術
一面題目:
自我介紹
擅長哪方面的技術?
java有哪些鎖中類?(樂觀鎖&悲觀鎖、可重入鎖&Synchronize等)。
比較重要的數(shù)據(jù)結(jié)構(gòu),如鏈表,隊列,棧的基本原理及大致實現(xiàn)
J.U.C下的常見類的使用。Threadpool的深入考察;blockingQueue的使用
Java內(nèi)存分代模型,GC算法,JVM常見的啟動參數(shù);CMS算法的過程。
Volatile關鍵字有什么用(包括底層原理)
線程池的調(diào)優(yōu)策略
Spring cloud的服務注冊與發(fā)現(xiàn)是怎么設計的?
分布式系統(tǒng)的全局id如何實現(xiàn)
分布式鎖的方案,redis和zookeeper那個好,如果是集群部署,高并發(fā)情況下那個性能更好。
Java中間件二面
技術二面考察范圍:
問了項目相關的技術實現(xiàn)細節(jié)
數(shù)據(jù)庫相關:索引、索引底層實現(xiàn)、mysql相關的行鎖、表鎖等
redis相關:架構(gòu)設計、數(shù)據(jù)一致性問題
容器:容器的設計原理等技術
二面題目:
參與的項目,選一個,技術難度在哪里?
Collections.sort底層排序方式
負載均衡的原理設計模式與重構(gòu),談談你對重構(gòu)的理解
談談redis相關的集群有哪些成熟方案?
再談談一致hash算法(redis)?
數(shù)據(jù)庫索引,B+樹的特性和建樹過程
Mysql相關的行鎖,表鎖;樂觀鎖,悲觀鎖
談談多線程和并發(fā)工具的使用
談談redis的架構(gòu)和組件
Redis的數(shù)據(jù)一致性問題(分布式多節(jié)點環(huán)境&單機環(huán)境)
Docker容器
Java中間件三面
技術三面考察范圍:
主要談到了高并發(fā)的實現(xiàn)方案
以及中間件:redis、rocketmq、kafka等的架構(gòu)設計思路
最后問了平時怎么提升技術的技術
三面題目
高并發(fā)情況下,系統(tǒng)是如何支撐大量的請求的?
接著上面的問題,延伸到了中間件,kafka、redis、rocketmq、mycat等設計思路和適用場景等
最近上過哪些技術網(wǎng)站;最近再看那些書。
工作和生活中遇見最大的挑戰(zhàn),怎么去克服?
未來有怎樣的打算
Java中間件四面
最后,你懂的,主要就是HR走流程了,主要問了未來的職業(yè)規(guī)劃。
頭條Java后臺3面
頭條一面
- 講講jvm運行時數(shù)據(jù)庫區(qū)
- 講講你知道的垃圾回收算法
- jvm內(nèi)存模型jmm
- 內(nèi)存泄漏與內(nèi)存溢出的區(qū)別
- select、epool 的區(qū)別?底層的數(shù)據(jù)結(jié)構(gòu)是什么?
- mysql數(shù)據(jù)庫默認存儲引擎,有什么優(yōu)點
- 優(yōu)化數(shù)據(jù)庫的方法,從sql到緩存到cpu到操作系統(tǒng),知道多少說多少
- 什么情景下做分表,什么情景下做分庫
- linkedList與arrayList區(qū)別 適用場景
- array list是如何擴容的
- volatile 關鍵字的作用?Java 內(nèi)存模型?
- java lock的實現(xiàn),公平鎖、非公平鎖
- 悲觀鎖和樂觀鎖,應用中的案例,mysql當中怎么實現(xiàn),java中的實現(xiàn)
頭條二面
- Java 內(nèi)存分配策略?
- 多個線程同時請求內(nèi)存,如何分配?
- Redis 底層用到了哪些數(shù)據(jù)結(jié)構(gòu)?
- 使用 Redis 的 set 來做過什么?
- Redis 使用過程中遇到什么問題?
- 搭建過 Redis 集群嗎?
- 如何分析“慢查詢”日志進行 SQL/索引 優(yōu)化?
- MySQL 索引結(jié)構(gòu)解釋一下?(B+ 樹)
- MySQL Hash 索引適用情況?舉下例子?
頭條三面
- 如何保證數(shù)據(jù)庫與redis緩存一致的Redis 的并發(fā)競爭問題是什么?
- 如何解決這個問題?
- 了解 Redis 事務的 CAS 方案嗎?
- 如何保證 Redis 高并發(fā)、高可用?
- Redis 的主從復制原理,以及Redis 的哨兵原理?
- 如果讓你寫一個消息隊列,該如何進行架構(gòu)設計?。空f一下你的思路。
- MySQL數(shù)據(jù)庫主從同步怎么實現(xiàn)?
- 秒殺模塊怎么設計的,如何壓測,抗壓手段
今日頭條Java后臺研發(fā)三面
一面
- concurrent包下面用過哪些?
- countdownlatch功能實現(xiàn)
- synchronized和lock區(qū)別,重入鎖thread和runnable的區(qū)別
- AtomicInteger實現(xiàn)原理(CAS自旋)
- java并發(fā)sleep與wait、notify與notifyAll的區(qū)別
- 如何實現(xiàn)高效的同步鏈表
- java都有哪些加鎖方式(synchronized、ReentrantLock、共享鎖、讀寫鎖等)
- 設計模式(工廠模式、單例模式(幾種情況)、適配器模式、裝飾者模式)
- maven依賴樹,maven的依賴傳遞,循環(huán)依賴
二面
- synchronized和reentrantLock的區(qū)別,synchronized用在代碼快、方法、靜態(tài)方法時鎖的都是什么?
- 介紹spring的IOC和AOP,分別如何實現(xiàn)(classloader、動態(tài)代理)JVM的內(nèi)存布局以及垃圾回收原理及過程
- 講一下,講一下CMS垃圾收集器垃圾回收的流程,以及CMS的缺點
- redis如何處理分布式服務器并發(fā)造成的不一致OSGi的機制spring中bean加載機制,bean生成的具體步驟,ioc注入的方式spring何時創(chuàng)建- applicationContextlistener是監(jiān)聽哪個事件?
- 介紹ConcurrentHashMap原理,用的是哪種鎖,segment有沒可能增大?
- 解釋mysql索引、b樹,為啥不用平衡二叉樹、紅黑樹
- Zookeeper如何同步配置
三面
- Java線程池ThreadPoolEcecutor參數(shù),基本參數(shù),使用場景
- MySQL的ACID講一下,延伸到隔離級別
- dubbo的實現(xiàn)原理,說說RPC的要點
- GC停頓原因,如何降低停頓?
- JVM如何調(diào)優(yōu)、參數(shù)怎么調(diào)?
- 如何用工具分析jvm狀態(tài)(visualVM看堆中對象的分配,對象間的引用、是否有內(nèi)存泄漏,jstack看線程狀態(tài)、是否死鎖等等)
- 描述一致性hash算法
- 分布式雪崩場景如何避免?
- 再談談消息隊列
抖音Java 三面
一面:
- hashmap,怎么擴容,怎么處理數(shù)據(jù)沖突?
- 怎么高效率的實現(xiàn)數(shù)據(jù)遷移?
- Linux的共享內(nèi)存如何實現(xiàn),大概說了一下。
- socket網(wǎng)絡編程,說一下TCP的三次握手和四次揮手同步IO和異步IO的區(qū)別?
- Java GC機制?GC Roots有哪些?
- 紅黑樹講一下,五個特性,插入刪除操作,時間復雜度?
- 快排的時間復雜度,最壞情況呢,最好情況呢,堆排序的時間復雜度呢,建堆的復雜度是多少
二面:
- 自我介紹,主要講講做了什么和擅長什么
- 設計模式了解哪些?
- AtomicInteger怎么實現(xiàn)原子修改的?
- ConcurrentHashMap 在Java7和Java8中的區(qū)別?
- 為什么Java8并發(fā)效率更好?什么情況下用HashMap,什么情況用ConcurrentHashMap?
- redis數(shù)據(jù)結(jié)構(gòu)?
- redis數(shù)據(jù)淘汰機制?
三面(約五十分鐘):
- mysql實現(xiàn)事務的原理(MVCC)
- MySQL數(shù)據(jù)主從同步是如何實現(xiàn)的?
- MySQL索引的實現(xiàn),innodb的索引,b+樹索引是怎么實現(xiàn)的,為什么用b+樹做索引節(jié)點,一個節(jié)點存了多少數(shù)據(jù),怎么規(guī)定大小,與磁盤頁對應。
- 如果Redis有1億個key,使用keys命令是否會影響線上服務?
- Redis的持久化方式,aod和rdb,具體怎么實現(xiàn),追加日志和備份文件,底層實現(xiàn)原理的話知道么?
- 遇到最大困難是什么?怎么克服?
- 未來的規(guī)劃是什么?
- 你想問我什么?
百度三面
百度一面
- 自我介紹
- Java中的多態(tài)
- 為什么要同時重寫hashcode和equals
- Hashmap的原理
- Hashmap如何變線程安全,每種方式的優(yōu)缺點
- 垃圾回收機制
- Jvm的參數(shù)你知道的說一下
- 設計模式了解的說一下啊
- 手撕一個單例模式
- 手撕算法:反轉(zhuǎn)單鏈表
- 手撕算法:實現(xiàn)類似微博子結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu),輸入一系列父子關系,輸出一個類似微博評論的父子結(jié)構(gòu)圖
- 手寫java多線程
- 手寫java的soeket編程,服務端和客戶端
- 手撕算法: 爬樓梯,寫出狀態(tài)轉(zhuǎn)移方程
- 智力題:時針分針什么時候重合
百度二面(現(xiàn)場)
- 自我介紹
- 項目介紹
- 服務器如何負載均衡,有哪些算法,哪個比較好,一致性哈希原理,怎么避免DDOS攻擊請求打到少數(shù)機器。
- TCP連接中的三次握手和四次揮手,四次揮手的最后一個ack的作用是什么,為什么要time wait,為什么是2msl。
- 數(shù)據(jù)庫的備份和恢復怎么實現(xiàn)的,主從復制怎么做的,什么時候會出現(xiàn)數(shù)據(jù)不一致,如何解決。
- Linux查看cpu占用率高的進程
- 手撕算法:給定一個數(shù)字三角形,找到從頂部到底部的最小路徑和。每一步可以移動到下面一行的相鄰數(shù)字上。
- 然后繼續(xù)在這個問題上擴展
- 求出最短那條的路徑
- 遞歸求出所有的路徑
- 設計模式講一下熟悉的
- 會不會濫用設計模式
- 多線程條件變量為什么要在while體里
- 你遇到什么挫折,怎么應對和處理
百度三面(現(xiàn)場)
- 自我介紹
- 項目介紹
- Redis的特點
- Redis的持久化怎么做,aof和rdb,有什么區(qū)別,有什么優(yōu)缺點。
- Redis使用哨兵部署會有什么問題,我說需要擴容的話還是得集群部署。
- 說一下JVM內(nèi)存模型把,有哪些區(qū),分別干什么的
- 說一下gc算法,分代回收說下
- MySQL的引擎講一下,有什么區(qū)別,使用場景呢
- 分布式事務了解么
- 反爬蟲的機制,有哪些方式
螞蟻中間件團隊面試題
螞蟻中間件一面:
- 自我介紹
- JVM垃圾回收算法和垃圾回收器有哪些,最新的JDK采用什么算法。
- 新生代和老年代的回收機制。
- 講一下ArrayList和linkedlist的區(qū)別,ArrayList與HashMap的擴容方式。
- Concurrenthashmap1.8后的改動。
- Java中的多線程,以及線程池的增長策略和拒絕策略了解么。
- Tomcat的類加載器了解么
- Spring的ioc和aop,Springmvc的基本架構(gòu),請求流程。
- HTTP協(xié)議與Tcp有什么區(qū)別,http1.0和2.0的區(qū)別。
- Java的網(wǎng)絡編程,講講NIO的實現(xiàn)方式,與BIO的區(qū)別,以及介紹常用的NIO框架。
- 索引什么時候會失效變成全表掃描
- 介紹下分布式的paxos和raft算法
螞蟻中間件二面
- 你在項目中怎么用到并發(fā)的。
- 消息隊列的使用場景,談談Kafka。
- 你說了解分布式服務,那么你怎么理解分布式服務。
- Dubbo和Spring Clound的區(qū)別,以及使用場景。
- 講一下docker的實現(xiàn)原理,以及與JVM的區(qū)別。
- MongoDB、Redis和Memcached的應用場景,各自優(yōu)勢
- MongoDB有事務嗎
- Redis說一下sorted set底層原理
- 講講Netty為什么并發(fā)高,相關的核心組件有哪些
螞蟻中間件三面
- 完整的畫一個分布式集群部署圖,從負載均衡到后端數(shù)據(jù)庫集群。
- 分布式鎖的方案,Redis和Zookeeper哪個好,如果是集群部署,高并發(fā)情況下哪個性能更好。
- 分布式系統(tǒng)的全局id如何實現(xiàn)。
- 數(shù)據(jù)庫萬級變成億級,你如何來解決。
- 常見的服務器雪崩是由什么引起的,如何來防范。
- 異地容災怎么實現(xiàn)
- 常用的高并發(fā)技術解決方案有哪些,以及對應的解決步驟。
京東4面(Java研發(fā))
一面(基礎面:約1小時)
- 自我介紹,主要講講做了什么和擅長什么
- springmvc和spring-boot區(qū)別
- @Autowired的實現(xiàn)原理
- Bean的默認作用范圍是什么?其他的作用范圍?
- 索引是什么概念有什么作用?MySQL里主要有哪些索引結(jié)構(gòu)?哈希索引和B+樹索引比較?
- Java線程池的原理?線程池有哪些?線程池工廠有哪些線程池類型,及其線程池參數(shù)是什么?
- hashmap原理,處理哈希沖突用的哪種方法?
- 還知道什么處理哈希沖突的方法?
- Java GC機制?GC Roots有哪些?
- Java怎么進行垃圾回收的?什么對象會進老年代?垃圾回收算法有哪些?為什么新生代使用復制算法?
- HashMap的時間復雜度?HashMap中Hash沖突是怎么解決的?鏈表的上一級結(jié)構(gòu)是什么?Java8中的HashMap有什么變化?紅黑樹需要比較大小才能進行插入,是依據(jù)什么進行比較的?其他Hash沖突解決方式?
- hash和B+樹的區(qū)別?分別應用于什么場景?哪個比較好?
- 項目里有個數(shù)據(jù)安全的,aes和md5的區(qū)別?詳細點
二面(問數(shù)據(jù)庫較多)
- 自我介紹
- 為什么MyISAM查詢性能好?
- 事務特性(acid)
- 隔離級別
- SQL慢查詢的常見優(yōu)化步驟?
- 說下樂觀鎖,悲觀鎖(select for update),并寫出sql實現(xiàn)
- TCP協(xié)議的三次握手和四次揮手過程?
- 用到過哪些rpc框架
- 數(shù)據(jù)庫連接池怎么實現(xiàn)
- Java web過濾器的生命周期
三面(綜合面;約一個小時)
- 自我介紹。
- ConcurrentHashMap 在Java7和Java8中的區(qū)別?為什么Java8并發(fā)效率更好?什么情況下用HashMap,什么情況用ConcurrentHashMap?
- 加鎖有什么機制?
- ThreadLocal?應用場景?
- 數(shù)據(jù)庫水平切分,垂直切分的設計思路和切分順序
- Redis如何解決key沖突
- soa和微服務的區(qū)別?
- 單機系統(tǒng)演變?yōu)榉植际较到y(tǒng),會涉及到哪些技術的調(diào)整?請從前面負載到后端詳細描述。
- 設計一個秒殺系統(tǒng)?
四面(HR面)
你自己最大優(yōu)勢和劣勢是什么
平時遇見過什么樣的挑戰(zhàn),怎么去克服的
工作中遇見了技術解決不了的問題,你的應對思路?
你的興趣愛好?
未來的職業(yè)規(guī)劃是什么?
美團java高級開發(fā)3面
美團一面
- 自我介紹
- 項目介紹
- Redis介紹
- 了解redis源碼么
- 了解redis集群么
- Hashmap的原理,增刪的情況后端數(shù)據(jù)結(jié)構(gòu)如何位移
- hashmap容量為什么是2的冪次
- hashset的源碼
- object類你知道的方法
- hashcode和equals
- 你重寫過hashcode和equals么,要注意什么
- 假設現(xiàn)在一個學生類,有學號和姓名,我現(xiàn)在hashcode方法重寫的時候,只將學號參與計算,會出現(xiàn)什么情況?
- 往set里面put一個學生對象,然后將這個學生對象的學號改了,再put進去,可以放進set么?并講出為什么
- Redis的持久化?有哪些方式,原理是什么?
- 講一下穩(wěn)定的排序算法和不穩(wěn)定的排序算法
- 講一下快速排序的思想
美團二面
- 自我介紹
- 講一下數(shù)據(jù)的acid
- 什么是一致性
- 什么是隔離性
- Mysql的隔離級別
- 每個隔離級別是如何解決
- Mysql要加上nextkey鎖,語句該怎么寫
- Java的內(nèi)存模型,垃圾回收
- 線程池的參數(shù)
- 每個參數(shù)解釋一遍
- 然后面試官設置了每個參數(shù),給了是個線程,讓描述出完整的線程池執(zhí)行的流程
- Nio和IO有什么區(qū)別
- Nio和aio的區(qū)別
- Spring的aop怎么實現(xiàn)
- Spring的aop有哪些實現(xiàn)方式
- 動態(tài)代理的實現(xiàn)方式和區(qū)別
- Linux了解么
- 怎么查看系統(tǒng)負載
- Cpu load的參數(shù)如果為4,描述一下現(xiàn)在系統(tǒng)處于什么情況
- Linux,查找磁盤上最大的文件的命令
- Linux,如何查看系統(tǒng)日志文件
- 手撕算法:leeetcode原題 22,Generate Parentheses,給定 n 對括號,請- 寫一個函數(shù)以將其生成新的括號組合,并返回所有組合結(jié)果。
美團三面(現(xiàn)場)
三面沒怎么問技術,問了很多技術管理方面的問題
- 自我介紹
- 項目介紹
- 怎么管理項目成員
- 當意見不一致時,如何溝通并說服開發(fā)成員,并舉個例子
- 怎么保證項目的進度
- 數(shù)據(jù)庫的索引原理
- 非聚簇索引和聚簇索引
- 索引的使用注意事項
- 聯(lián)合索引
- 從底層解釋最左匹配原則
- Mysql對聯(lián)合索引有優(yōu)化么?會自動調(diào)整順序么?哪個版本開始優(yōu)化?
- Redis的應用
- Redis的持久化的方式和原理
- 技術選型,一個新技術和一個穩(wěn)定的舊技術,你會怎么選擇,選擇的考慮有哪些
- 說你印象最深的美團點評技術團隊的三篇博客
- 最近在學什么新技術
- 你是怎么去接觸一門新技術的
- 會看哪些書
- 怎么選擇要看的書
總結(jié):
以上就是“熬夜”“吐血”整理出來的7篇Java大廠面試題,其實我們可以發(fā)現(xiàn)很多知識點是面試必問到的。祝大家都能找到一分滿意的工作!加油!
針對最近很多人都在面試,我這邊也整理了相當多的面試專題資料(spring、mybatis、jvm。。。帶多了可以看附上的圖片)和多家公司的面試真題。
上述的面試題答案都整理成文檔筆記。有需要的可以識別下面的圖獲取!備注:掘金
上述的面試題答案都整理成文檔筆記。有需要的可以識別下面的圖獲取! 備注:簡書
有人可能會說了:面試真題你全部放上來就好了。。。
你知道我最近整理了多少嗎?
上述的面試題答案都整理成文檔筆記。 也還整理了一些面試資料&最新2020收集的一些大廠的面試真題(都整理成文檔,小部分截圖),有需要的可以識別下面的圖獲取備注:簡書
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持。
[圖片上傳失敗...(image-471e52-1599029113443)]