1. 程式人生 > >Java到底要做到什麽程度才能適應市場的需求(大佬的面試經歷)

Java到底要做到什麽程度才能適應市場的需求(大佬的面試經歷)

ray 適合 arraylist term 動態代理模式 模型 上班 支持 成長

前言:從過年前就萌生出要跳槽的想法,到過年來公司從月初提出離職到~~號正式離職,上班的時間也出去面試過幾家公司,後來總覺的在職找工作總是得請假,便決心離職後找工作。到3月10號找到了一家互聯網公司成功應聘上,中間也經歷了很多公司,有外包的、創業的、互聯網的等等各種類型,也收到了很多offer,也有面試不順序的...今天來記錄一下自己面試中的問題,圍繞著java到底應該具備什麽樣的水平才能適應現在市場的要求的主題來談一談。
創一個小群,供大家學習交流聊天
如果有對學JAVA方面有什麽疑惑問題的,或者有什麽想說的想聊的大家可以一起交流學習一起進步呀。
也希望大家對學JAVA能夠持之以恒
JAVA愛好群,
如果你想要學好JAVA最好加入一個組織,這樣大家學習的話就比較方便,還能夠共同交流和分享資料,給你推薦一個學習的組織:快樂學習JAVA組織 可以點擊組織二字,可以直達

技術分享圖片
Java到底要做到什麽程度才能適應市場的需求(本人的面試經歷)

本篇文章目錄:

一:面試中的問題

二: 面試中要註意的問題

三:關於最後的選擇

四:兩年java到底應該具備什麽樣的水平

一:面試中的問題

java集合框架:

1:介紹一下java的集合框架

2:HashMap遇見哈希沖突會如何怎麽辦?HashMap是線程安全的嗎?HashMap在高並發下會有什麽問題?然後引入ConcurrentHashMap的原理?

3:Hahtable和concurrentHashMap的區別?

4:數組和ArrayList的區別?Arraylist是如何擴容的?

5:線程池中的阻塞隊列一般會選擇哪種隊列?為什麽?

6:RetreenLock的原理?AQS的原理?

7:HashMap的容量為什麽推薦是2的冪次方?

框架類:

1:mybatis的二級緩存有什麽問題?

2:mybaits中的mapper的#{}和${}有什麽區別?哪種可以防止sql註入?

2:我們知道mybatis的mapper和接口之間是沒有對象的,那麽它是如何映射的?

4:說說springmvc的註解有哪些?他們的原理是什麽?

5:springmvc的控制器是單例的嗎?是線程安全的嗎?

6:struts1和struts2的區別?是線程安全的嗎?

7:spring如何解析它的xml文件?

8:spring的核心是什麽?Aop的原理是什麽?

redis相關:

1:redis數據類型有哪些?

2:zset數據類型是如何排序的?

3:redis如何做項目的中間緩存層?

4:redis的Hash的時間復雜度是多少?

數據庫:

1:數據庫索引分為哪幾種?組合索引有什麽要註意的問題?

2:什麽是悲觀鎖 什麽是樂觀鎖?如何實現悲觀鎖?

3: 數據庫關鍵字的執行順序是什麽?

4:如何進行sql優化?

5:有沒有進行過分庫分表操作?分庫之後如何保持事務一致?

分布式和微服務:

1:微服務要克服那些問題?微服務系統是怎樣通信的?

2:分布式環境下如何解決session不一致的問題?

3:分布式下如何保證id一致?

4:你在dubbo的使用過程中遇到什麽問題?

5: zookeeper的負載均衡算法有哪些?

jdk源碼相關

1:synchronized的原理?它該怎麽用?如何一個方法是synchronized的,其他的非synchronzied線程能進入嗎?

2:cvs中的ABA問題如何解決?

3:volatile的原理是什麽?volatile一定是線程安全的嗎?

4:ThreadLocal是什麽?它的原理是什麽?

5:CountDowanLatch有沒有用過?適合在什麽樣的場景下用?

設計模式相關:

1:實現兩種單例模式

2:講一下觀察者模式

3:spring中都用到哪些設計模式?

4:動態代理模式是如何實現的?

5:你在項目中用到哪些設計模式了?講解一下業務場景

算法相關:

1:快速排序的時間復雜度?手寫快速排序(註意遞歸式和非遞歸式的實現方式)

2:手寫二分查找

3:手寫堆排序

4:一個int數組如何進行奇數和偶數分離?

5:用算法實現String轉double

jvm相關:

1: jvm的垃圾回收算法有哪些?分別解釋一下?

2: 新生代為什麽要設置兩個survior區?

3:如何通過一個.class文件獲取它的jdk版本?

4:jvm的內存模型?哪些是線程私有的?哪些是公共的?

關於自己的項目(問的時間最長)

1:簡述一下自己的項目?你在其中主要是做什麽的?

2:你在項目中都遇到了哪些難題?最後都是怎麽解決的?

3:項目有多大規模?周期多久(這個很多都問到的)

4:講一下某一模塊的具體實現方式?然後從中挑刺

5:如何解決某一時刻的高並發請求?

6:如何解決訂單支付回調的超時問題?輪詢應該怎麽寫?

其他:

1:秒殺場景如何削峰?

2:http和udp的區別是什麽?

3:ajax的跨域問題

4:nio與io的區別?什麽情況下適合用nio

5: 說說常見的linux命令,linux查看內存的命令是什麽?

7:git遇見代碼沖突了怎麽辦?

8:說幾個常見的maven命令,maven如何排除一個jar包的沖突?

二: 面試中要註意的問題

2.1:一定要有自己的實際項目經驗

按照我這麽多面試經驗?其實有的公司會側重於問自己做的項目經驗,有的公司側重於問問題,一般互聯網公司會對技術要求比較高,既要求項目經驗又要要求技術水平

2.2:可以適當渲染,但是不要誇大其詞

面試的過程中最忌諱的就是誇誇其談,高屋建瓴很厲害,但是一到實際細節都不知所雲了,在技術總監面前,其實你吹牛或者是真的會他是一目了然的。不懂裝懂,有的面試官又給你臺階下,不然你就卡帶了,這很容易造成面試的不好印象

2.3:要會自我介紹

面試的時候一般的話都會讓你做一個自我介紹,這個要分對象,是技術官還是Hr,如果是技術官側重於綜述一下自己的項目的實際技術棧和技術路線,如果是Hr的話不要用過多的技術語言,而要說一些自己的實際工作經歷或者自己上家公司的運營情況

2.4:關於簡歷

簡歷切記不可太啰嗦,但是不可太簡單,作為技術的簡歷一般起碼得在3頁,不然HR會覺得你的求職態度不怎麽好,不管如何求職結果如何,一個良好的簡歷會給人留下好的第一印象

(有簡歷模板)

三:關於最後的選擇

說實話也接受到很多HR的offer邀請,但是我一般會選擇說考慮一下一天以後再給回復,切不可直接把話說死,不然後面就尷尬了。實際提供的offer的有一家外包公司,三家創業公司,兩家互聯網公司,最終選擇了一家互聯網公司,雖然實際上班地點有點遠(下了地鐵還得座公交,後來還是選擇騎單車了),但是互聯網公司會給你快的成長速度,並且互聯網技術棧都比較新..相比於傳統企業會有更多的技術挑戰。而外包公司的話,可能環境不怎麽好,我記得自己當初還是個小白的時候,去了外包,那裏的優點就是會有不斷的活,新人進去的話收獲還是挺多的,但是作為已經有兩年經驗的我,外包很顯然不適合我的後期職業發展。缺點:技術更新叠代的太慢,沒有歸屬感,最後的選擇我個人的意見是選擇技術優先,畢竟以後軟件路還長,技術才是王道

四:兩年java到底應該具備什麽樣的水平

兩年java的面試過程中遇到了很多挑戰,也遇到了一些不談技術的公司,從上面的面試題可以看出,目前對於java的要求越來越高,水漲船高,畢竟這個行業的人數越來越多,而保持自己的競爭力的唯一方法就是找對方向,不斷學習,註意這裏我提到的第一點是方向,然後才是學習。給自己制定一個職業規劃,按照這個路線往前走,我其實還在想分布式微服務這塊以後再深入學習,可是按照市場要求,現在已經刻不容緩了,一些技術架構比如:springcloud、duboo都得保持學習,這樣才能有競爭力!作為一名兩年的javaSir,

你必須具備以下技能

1:閱讀源碼的能力,多用Intelj idea這個開發工具,而不是eclipse。它是直接支持反編譯class文件的,多讀jdk源碼,吸收優秀的源碼並加以復用

2:做到能夠手寫常見的排序算法,比如快速排序和堆排序、冒泡排序、選擇排序、二分查找這些都是必須的

3:對java的框架有很深入的認識,現在基本流行的ssm框架很多人都會,可是知道一些原理的人就不多了,得不斷研究這些框架本身,它們都是經過無數次錘煉 出來的優秀框架

4:多用redismongodb,傳統的關系型數據庫已經無法市場需求了,這些東西也是面試中的一部分,雖不是重點,但也是加分的選項

5:對於微服務和分布式,這個是有一定難度的,我在面試人人車的時候,一面很順利,二面被技術總監給pass了,問題就是分布式不是特別熟悉!要想進入好的互聯網公司,分布式和微服務是很必須的

6:jvm的底層,這裏要推薦的書就是周誌明的《深入jvm虛擬機》這本書了,我總在閑暇時間讀它,所以jvm的問題還是信手拈來的

Java到底要做到什麽程度才能適應市場的需求(大佬的面試經歷)