【面试】Java面试常见问题汇总(不含答案)、面试指导学习笔记
面試常見問題角度
String是基本數據類型嗎?
int和Integer有什么區別?
HashMap和HashTable的區別,及其實現原理。
ArrayList/HashMap的源碼、如何實現源碼
冒泡排序、快速排序
單例模式/工廠模式/動態工廠
談談你對面向對象的理解
事務ACID/隔離級別
Spring IOC/AOP
阿里
1、tcp為什么是可靠的
2、哪些情況可以用udp
3、跑程序時候發現服務器系統內存占用100%怎么辦
4、HashMap、ConcurrentHashMap。幾乎把里面的所有函數都講了一遍
5、volatile
6、jvm數據區域
7、新生代大小參數是啥
8、堆的分類新生代老年代
9、redis網絡協議,redis為什么單進程,為什么redis的decsby原子性
10、spring各種原理。xml怎么解析,aop原理
11、寫sql
12、java怎么與數據庫交互
13、數據庫中間件了解嗎
1、做過的項目有哪些
2、瘋狂挖項目
3、springcloud源碼看過嗎?(沒有,卑微.jpg,俺說俺知道各組件原理,但是面試官只問源碼)
4、四次揮手
5、進程通信方式
6、進程通信中的管道原理
7、linux的io模型
8、linux的shell腳本
9、RocketMQ事務性原理
10、redis數據結構有哪些,底層結構分別是怎么實現的→源碼刨析
11、一直聊項目
12、兩個超大的文件,里面各裝有上百萬個數,還有無序的,數字的大小范圍是0-500w左右。如何求兩個文件中的重復的數據
作者:牛客237851878號
鏈接:https://www.nowcoder.com/discuss/390727
來源:牛客網
自我介紹
說項目
我的項目里面比較好的就是一個三次迭代的app(python爬蟲(有加密參數)+cookie+resdis),說了20分鐘,說完面試官問這你自己想出來的?我果斷回答是🤣(雖然確實我一個人做的)。
之后就是問題,問了11個好像。沒有順序之分下面的,想到哪個寫哪個。
1.synchronized升級過程
2.synchronized和reentranlock的區別
3.常見設計模式的應用場景講一下,注意不是讓你說有哪些設計模式,而是項目之中的具體應用
4.設計一張表,你會怎樣設計索引
5.java鎖再說一下應用場景,舉個具體的場景
6.大型復雜項目之中,不停進行內存回收,jvm怎么調優
7.大型復雜項目之中,你怎么設計數據庫,java代碼,緩存
8.數據庫之中有哪些鎖
9.說一下進程和線程的區別
10.說一下死鎖
11.看你很了解分布式,說一下分布式,說了redis一致性哈希,redis-cluster
12.公平鎖,非公平鎖,可重入鎖等。
13.hashmap和concurrenthashmap的區別,原理(注意jdk版本不同concurrenthashmap實現不同)
14.ThreadLock
然后說我原理方面和應用方面可以,但是缺少大型項目開發經驗,后面應該多參與一些大型項目。
最后問了我感覺你還可以,為什么筆試一個題都沒做出來,通過0%,我說我算法沒有達到做出兩道hard級別的動態規劃題的程度,面試官表示理解,說后面補一下。
這次面試經歷很好,說了53分鐘。
問的題目比較常規,但是場景題比較發散,看你經驗了感覺。
第3個和第7個說得不好,只能根據已有知識進行分析,然后我說我不了解,只能分析這么多,面試官說你不了解就不問這個。
第6個我說了用單例模式來防止對象的頻繁創建更新,面試官說我誤解了他的意思,是想問我jvm命令的,這個不會。
其他題都是回答完直接過,不過第14題沒回答出來,給忘記了。
釘釘
1、介紹項目
2、RocketMQ事務性原理是什么
3、RocketMQ的內部結構是什么,看過RocketMQ的源碼嗎(沒有,卑微.jpg)
4、RocketMQ是2PC還是3PC的
5、數據庫索引B+樹
6、Http狀態碼302、204、500、504
7、線程池的拒絕策略有哪些
8、JDK8的新特性有哪些
字節
1、自我介紹
2、問項目相關
3、為什么高并發使用redis不用mysql
4、redis的數據結構
5、zset
6、redolog、undolog、binlog
7、HashMap
8、TCP四次揮手的時候close-wait過多怎么辦
9、四次揮手的內容
10、進程和線程的區別
代碼:
5、堆排序
6、單例模式
7、最多會議場數問題
8、字符串翻轉
1.講講你的項目
2.講講你用netty干了什么
3.講講netty怎么提升的性能
4.講講你項目的數據庫設計思路(這個題真的我太懵了,太發散,但是最后他說其實就是想問我用的是第幾范式,反正這個我真的就胡說一通,涼就涼這兒了)
5.你開發用于登錄功能的時候怎么保證的刷新后登錄狀態不變(我說用到cookie和session結合,互傳sessionid校驗)
6.你這種方法不安全,cookie被劫持怎么辦(我說我這小本生意,小項目,不需要考慮劫持,他說,emmm,也是hhh)
7.問基礎,講一下hashmap(擴容機制講一下)
8.如果持續增大,怎么擴容,(我說用resize加桶,但是我應該說一下擴大一倍的,忘說了 應該有瑕疵)
9.hashmap為啥會有線程安全問題(感謝一個老哥的面經,我今天早上剛看了,扯了一下1.7的頭插,1.8的尾插,死鏈)
10.有了尾插法線程安全問題解決了嗎(我說沒有,只要存在put碰撞,就會有,我感覺我說的有點假大空)
11.concurrenthashmap是怎么解決這個問題的(我說1,7用的reentrantlock 加鎖1.8用的synchronized鎖和cas算法)
12.jvm堆的結構劃分(我說分了新生代和老年代 不知道說的對不對)
13.新生代和老年代的gc算法(我說新生代死的多,用復制,老年代用標記整理清除)
14.新生代怎么轉入老年代的(1.復制算法,2,大對象直接進,3,年齡計數器)
15.又問數據庫。。。 問數據庫索引的原理和優缺點(死記硬背的東西講了一波)
16.建索引的策略(常查詢數據建索引,較長的數據列鍵前綴索引,索引這一塊我真沒用過,我也給他實話實話沒用過這都是死記硬背)
關于項目經驗
(5)描述:技術+文字,項目周期:半年以上,寫幾個項目?3年以內工作經驗:寫2-3個;剛畢業:1-2個
使用到的技術,要寫2-3個非常用技術/非培訓機構標配技術,才能符合真實的需求
加分項
主題:出奇制勝
1、反對和所有應聘者千篇一律
基類:《阿里巴巴Java開發手冊》,《Effective Java》
2、反對和所有《面試寶典》千篇一律
建議:只看寶典里的題目,不要背答案(去博客、github、書里面搜索答案,自己總結理解)
3、源碼級解決問題
Java基礎復習
靜態屬性、靜態方法
靜態屬性、靜態方法,都隨著類的加載而加載。
在靜態屬性、靜態方法被加載時,非靜態屬性、方法都還沒有加載,因此不能在靜態方法中調用非靜態方法/屬性。
工具類通常被聲明為靜態的
內部類
總結
以上是生活随笔為你收集整理的【面试】Java面试常见问题汇总(不含答案)、面试指导学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库规范设计说明书(参考阿里开发规范)
- 下一篇: 【Java】什么?你项目还在用Date表