粵科軟件2015年4月份被阿里巴巴以8.3億收購了,阿里打算擴大粵科軟件的開發團隊,聽說目前有四五十人的開發團隊,未來要擴展到一百人。
上週就收到獵頭的電話,要我好好準備,獵頭還提醒我阿里那邊可能會問到的題目,比如JAVA虛擬機、Spring源碼,呵呵,感覺這個獵頭真好,而且他還提醒我說之前幾個候選人因爲基礎不過關被淘汰了,叫我週末好好準備。呵呵,週末看了一個有關JAVA虛擬機的書《深入理解Java虛擬機++JVM高級特性與最佳實踐》,等待今天晚上阿里那邊員工的電話面試。
下面列出今晚電話面試的主要題目,今晚答得讓我不太滿意,準備得不夠充分,有點遺憾,估計凶多吉少。
1、你現在在做啥系統?
簡單介紹了本人現在所做的一個B2B平臺使用的技術情況,包括JQuery、Freemarker、SpringMVC、 Spring Security、MyBatis、MySQL、Redis、RabbitMQ、Nginx、Zookeeper、Dubbo、CAS等。
2、熟悉分佈式緩存框架嗎?Redis集羣的方式是什麼?Redis的數據類型有啥?
(1) 使用過Redis
(2) Redis的數據類型有String、Integer、Set、List
(3) Redis的集羣方式當時沒答出來,其實就是主從集羣。
3、HashMap、HashTable、ConcurrentHashMap的區別?
(1) HashMap不是線程安全的,鍵值可以爲空
(2) HashTable是線程安全的,鍵值不可以爲空
(3) ConcurrentHashMap是線程安全的,相當於將HashMap拆分成多個(默認16個)個HashTable,ConcurrentHashMap的併發性能要遠遠高於HashTable.
4、你瞭解JAVA的內存模型嗎?
JAVA的內在模型分成主內存和工作內存,主內存主要存放全局變量,是線程共享的;工作內存主要存放局數據變量,是線程獨享的。如果線程需要訪問到全局變量,則會將主內存的全局變量拷貝一份到工作內存中,線程直接訪問工作內存中的變量拷貝,而不會直接訪問全局變量。線程若需要修改全局變量,則會先修改工作內存中的變量拷貝,再同步到主內存中的全局變量中。
5、你所做的系統有什麼技術是你覺得難做的?
(1) 單點登陸CAS
(2) 跨域問題
(3) session共享
6、你所做的系統中你做的最重要的是什麼?
(1) 單點登陸CAS
然後講解了CAS的原理。
7、你瞭解JVM的堆分區結構嗎?
JVM中的堆分成年輕代和年老代。
年輕代主要存放new出來的實例和數組,年老代主要存放類的變量和靜態數據。
年輕代中的數據經過若干次垃圾回收後(默認是15次),如果還存在年輕代中,則會轉移到年老代中。如果年輕代中大對象的比例超過40%,也會轉移到年老代中。
8、你有什麼想要問的嗎?
(1) 項目中的開發人數
目前四五十人,未來會擴展到一百人.
想要成爲一名JAVA大牛,哥還有很長的路要走,路漫漫修遠兮,吾將上下而求索!
哥一定要在一年內,實現月薪達到20K的目標!