您好,登錄后才能下訂單哦!
Java程序員面試經歷及建議,MySQL高頻靈魂問題分享(建議收藏)
前言:
本文主要給在面試中的人一些建議,以及個人的一些面試經歷跟流程,希望可以幫助到各位同仁們,后面也分享了一些MySQL的面試題×××試高頻問題以及高頻知識點我都會分享的哦
面試題主要受眾為開發人員,所以不涉及到MySQL的服務部署等操作,且內容較多,大家準備好耐心和瓜子礦泉水.
前一陣系統的學習了一下MySQL,也有一些實際操作經驗,偶然看到一篇和MySQL相關的面試文章,發現其中的一些問題自己也回答不好,雖然知識點大部分都知道,但是無法將知識串聯起來.
面試經歷及建議
簡歷投遞
投遞的方式有幾種吧,相信大家也都知道。一般在程序員的垂直招聘網站投遞即可,比如脈脈、BOSS直聘、拉勾等等。智聯招聘啥的,不太適合咱們程序員,你懂的。另外,由于自己不是大牛,所以如果有獵頭勾搭的話,我盡量不會理會,因為有過血的教訓。所以盡量還是自己投簡歷比較靠譜,或者是內推。
面試
由于我是跨城市,所以我接到的面試一般都是電話面試+視頻面試,如果聊得差不多了,也有現場面試,不會拘泥于形式。
一般來說,面試流程都差不太多。首先自我介紹,重點介紹一下自己的一些工作經歷,以及自己主要負責的一些內容。這塊可以提前準備一下,不過也不需要特地準備,別搞得像背書似的,反而覺得不真實。
1 技術面試
一般公司都會有兩到三輪的技術面試,大廠的技術面試輪次還可能更多,但是每輪考察的內容又不是很一致,下面列舉一些自己遇到的一些問題。
1.1 Java基礎
此時一般會問到一些Java的基礎知識,比如
synchronized static修飾類和方法有什么區別
HashMap的原理,底層數據結構,rehash的過程,指針碰撞問題
HashMap的線程安全問題,為什么會產生這樣的線程安全問題
ConcurrentHashMap的數據結構,底層原理,put和get是否線程安全
Java IO的一些內容,包括NIO,BIO等
1.2 Java高級特性
此時問到的問題一般包含JVM,多線程的一些內容,這塊建議大家多看看源碼,大致如下:
Java線程池的構造方法,里面參數的含義,以及原理
volatile和ThreadLocal解決了什么問題
CAS在Java中的具體實現
Java虛擬機的構成,以及一個Java對象的生命周期,還有堆棧和方法區中存儲的內容
JVM的GC過程,包括一些實際問題的分析,比如說明一個現象,讓你分析可能是什么原因會導致這樣的問題,應該如何對JVM參數進行調優
synchronized和Lock的區別,以及底層實現原理
Full GC和Minor GC觸發的條件
GC Roots的選擇
jmap,jstat,jstack等的使用場景,MAT等
ClassLoader的加載過程
CountDownLatch、CyclicBarrier和Semaphore等
Java 8 的新特性等
1.3 數據庫
這里的數據庫包含兩種,一種一般是MySQL,另外是NoSql數據庫,包括Redis、MongoDB等。一般會問的問題有:
inner join和left join等的區別
SQL調優,explain,profile等
InnoDB和Myisam的區別
ACID
數據庫的事務隔離級別,以及他們分別能解決什么問題
Redis的幾種數據結構
Redis是單線程還是多線程
Redis的持久化
悲觀鎖和樂觀鎖的含義
最左前綴索引,索引的數據結構,聚簇索引等(這塊還沒搞明白)
1.4 框架
1.4.1 Spring
因為spring是我們常用的框架,所以這塊的內容會問的比較多,也會比較細。
Spring的兩大特性(IoC和AOP)
Spring的bean的生命周期
Spring是如何解決Bean的循環引用問題的
AOP的兩種實現方式,以及兩者的區別(這里其實使用了動態代理,具體動態代理分為兩種,一種是JDK的動態代理,主要使用的是JDK的反射,還有一種是CGLib,兩者區別可以自己搜索,文章比較多)
AOP一般的使用場景
Spring的事務原理
1.4.2 MyBatis
這塊問到的比較簡單些:
$和#的區別
MyBatis和Hibernate的區別
源碼,一般問的比較少
1.4.3 Dubbo
因為平時自己用到了Dubbo,所以這塊會有問到:
RPC的原理
Dubbo是如何完成遠程調用的
Dubbo如何進行調優
Dubbo的通信協議
Dubbo是如何實現負載均衡的
1.4.4 ZooKeeper
ZK的使用場景
ZK的選舉機制
ZK的節點類型
一致性Hash原理
1.5 數據結構和算法
這塊的內容是基礎,如果面試官懷疑你的能力,一般一會問到這部分內容,比如樹的遍歷、快速排序等。
1.6 linux
一般會問一些命令的使用,然后會舉一個實際的場景,讓你用命令去排查問題,這塊自己不是很熟,需要盡快加強。
1.7 綜合題
這塊的題目,面試官一般會問的比較深入。比如如何設計一個搶購系統,String轉Integer等,這部分需要考驗的就是一個人的臨場應變能力,以及在平時工作中系統設計能力的積累,以及考慮問題是否周到等。也有可能會對你簡歷上面寫的系統的設計進行詳細的詢問,所以在你寫簡歷的時候,千萬不能把自己不熟悉的內容寫上去,而且自己又講不清,這樣一般會被直接pass掉。
當然也會問一些常用的maven的命令,設計模式的題目(這部分問的比較多的就是單例模式)。
2 HR面試
這塊一般會問一些離職原因,當然也會問一些平時工作中遇到的問題,自己是如何解決的。如果聊得好,這時候HR會跟你談薪資。問到目前薪資的時候,我目前是實事求是的告知的。這里,可能會有很多人報高一些,差不多的話,問題一般不大,如果太夸張的話,后續可能會有問題,比如讓你提供銀行流水等,差太多的話,可能會有誠信問題。
另外就是薪資漲幅的問題,我的原則是會事先對公司的規模這塊進行考慮,然后結合目前的薪資,一般會設置一個范圍(后來發現這樣很不好,會處于被動),在當前薪資的基礎上上浮30%的樣子(可能各地有差異,不過這個會比較安全)。如果你很擅長談這個,請忽略之。
此外,最重要的可能就是五險一金的繳納了。一般小的公司會讓你選擇是避稅還是不避稅,這里面還是有點學問的。避稅的話,可能你的公積金會很少。目前我遇到過兩種,一種是每個月按照固定的額度給你交公積金,不論你以后的工資是否上漲,都跟公積金沒有關系;還有一種是按照一個額度給你交,一般是工資的7%給你交,或者按照最低標準給你交。遇到這種情況,請自己慎重考慮是否需要接收offer。
最后,福利這塊也可以問問,比如問一些年終獎,年假,加班調休等。
自己整理的一份倆百多頁Java核心知識點PDF,有一說一這個核心知識寶典,可是給了我巨大的幫助,幫我斬獲了很多的offer,這份pdf知識點可以分享給大家×××某人 資料即可免費領取
面試題
主要包括索引,事務,優化等方面,以在面試中高頻的問句形式給出答案.
索引相關
關于MySQL的索引,曾經進行過一次總結,文章鏈接在這里 Mysql索引原理及其優化.
1. 什么是索引?
2. 索引是個什么樣的數據結構呢?
3. Hash索引和B+樹所有有什么區別或者說優劣呢?
4. 上面提到了B+樹在滿足聚簇索引和覆蓋索引的時候不需要回表查詢數據,什么是聚簇索引?
5. 非聚簇索引一定會回表查詢嗎?
6. 在建立索引的時候,都有哪些需要考慮的因素呢?
7. 聯合索引是什么?為什么需要注意聯合索引中的順序?
8. 創建的索引有沒有被使用到?或者說怎么才可以知道這條語句運行很慢的原因?
9. 那么在哪些情況下會發生針對該列創建了索引但是在查詢的時候并沒有使用呢?
事務相關
1. 什么是事務?
2. ACID是什么?可以詳細說一下嗎?
3. 同時有多個事務在進行會怎么樣呢?
4. 怎么解決這些問題呢?MySQL的事務隔離級別了解嗎?
5. Innodb使用的是哪種隔離級別呢?
6. 對MySQL的鎖了解嗎?
7. MySQL都有哪些鎖呢?像上面那樣子進行鎖定豈不是有點阻礙并發效率了?
表結構設計
1. 為什么要盡量設定一個主鍵?
2. 主鍵使用自增ID還是UUID?
3. 字段為什么要求定義為not null?
4. 如果要存儲用戶的密碼散列,應該使用什么字段進行存儲?
存儲引擎相關
1. MySQL支持哪些存儲引擎?
零散問題
1. MySQL中的varchar和char有什么區別.
2. varchar(10)和int(10)代表什么含義?
3. MySQL的binlog有有幾種錄入格式?分別有什么區別?
4. 超大分頁怎么處理?
5. 關心過業務系統里面的sql耗時嗎?統計過慢查詢嗎?對慢查詢都怎么優化過?
6. 上面提到橫向分表和縱向分表,可以分別舉一個適合他們的例子嗎?
7. 什么是存儲過程?有哪些優缺點?
8. 說一說三個范式
9. MyBatis 中的 #
讀者福利
針對于上面的面試題我總結出了互聯網公司java程序員面試涉及到的絕大部分面試題及答案做成了文檔和架構視頻資料免費分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并發等架構技術資料),希望能幫助到您面試前的復習且找到一個好的工作,也節省大家在網上搜索資料的時間來學習。合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!
獲取方式:資料整理不易×××人就可以 獲取免費。上面的pdf文檔需要的也是哦
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。