1. 程式人生 > >北京面試:Java程式設計師一天收33個面試通知,面試經驗讓你彎道超車

北京面試:Java程式設計師一天收33個面試通知,面試經驗讓你彎道超車


很多人看到這個,估計說我是來炫耀的,實際並非如此,看我一一道來:由於同學在這邊,所以過來看看,以純屌絲形象腳踏一雙人之託鞋,手拎著一個用了5年的箱子,穿著一件睡衣一樣長的短袖,經過站了18小時火車,終於到了杭州火車站。到同學那裡,由於太累了,直接睡著了,到了第二天,一大早就花了半個小時,投了一些自己比較心儀的公司。從九點就沒睡覺了,到晚上7點為止接了30來個面試電話,不包括髮郵件。

現在事情就來了,到目前有選擇面試了7家,6家都拿到了offer,最後選擇了一家工資13k,工作環境不錯,有游泳館、籃球場、健身房、包吃(中餐和晚餐)包住(兩個人,兩室一廳那種),就是加班嚴重。

說這麼多,其實我主要想和大家分享一些面試經驗。究竟哪些技術點或方向能給面試官留下深刻印象呢?

我覺得優秀的,有潛質的程式設計師可以從下面幾點體現。

一、效能調優

需要清晰圖片的可以加入群聊免費領取!

【架構華山論劍:836442475】:https://jq.qq.com/?_wv=1027&k=58Z7Vth

幾乎每個JAVA後端開發程式設計師,都會在面試時碰到諸如如何效能調優的問題,如何回答好這個問題,不僅僅是對JVM,記憶體模型等的理解,更重要的是碰到效能問題時,排查問題的方法論和思路。

典型的一個場景是:在壓力測試時,發現FullGC頻率很高,如何解決?

此類問題一般從以下幾點入手:

觀察GC日誌,判斷是否有記憶體洩漏,或者存在的內部不合理點。此處要求能熟悉各種linux命令,可以快速檢視和定位。
調整JVM 引數,如新生代,年老代大小,S0和S1大小比例,不同垃圾回收器的採用。並結合業務特點做進一步分析。這裡不但要求紮實的JVM記憶體模型和理論,還要求對JVM的各種引數設定耳熟能詳,並能實踐操作。
Dump記憶體,做進一步的物件分析。
壓測指令碼的編寫,效能問題解決前可以發現問題,並能在問題解決後真實的驗證。
此類優化不僅僅是照本宣科式的回答,面試官一定會喜歡問實際中操作的場景,和解決問題的思路。因為效能問題的原因是多種多樣的,但是解決問題的思路和方法論是可以明確的。

二、網路框架的理解和使用

大家一定都聽過或使用過網路非同步框架Netty,甚至使用netty框架開發過一些應用和功能。

但是大部分人僅限於對Netty的使用,甚至僅僅知道其他一些開源框架使用了Netty,但是在資深面試官眼裡,Netty有很多值得學習和借鑑的地方,使用過Netty並且能對Netty的一些原理有一定的瞭解且能學以致用的Java程式設計師格外受歡迎。

一般來說,要求較高的面試官和技術經理喜歡從Netty的設計模式角度深入的考察技術人員對網路開發和相關理論的理解如:

1、Netty的Reactor模型如何設計,反應在應用裡的模型是如何(見下圖)。

2、Netty的pipeline 責任鏈如何使用,業務場景中是否有類似的實踐經驗。

3、專案中有無使用Netty,並利用Netty進行私有化協議設計。

大家不僅要求能使用Netty,通過閱讀其原始碼,理解其中的精髓,並能應用在自己的實踐專案中,這個才是亮點和加分項。

三、開源服務化RPC框架的理解和使用

需要清晰圖片的可以加入群聊免費領取!

點選連結加入群聊【架構華山論劍:836442475】:https://jq.qq.com/?_wv=1027&k=58Z7Vth

網際網路經過十幾年的發展,早已經從單體應用發展為服務化應用,大廠裡系統和服務尤其如此。

拿經典的dubbo 服務化框架 舉例,當前市面上有很多dubbo相關的文章和介紹,這裡撇開不談,從技術負責人的角度來,我會更關心下面有關幾個dubbo相關的問題。

1、技術選型:為什麼選擇dubbo,而不選擇其他如spring cloud框架?

我認為可以從如下考慮:

A)業務的特點以及可預見的後續的發展。作為高階技術人員,必須需要對業務的的發展做預計和規劃。

B)可用性要求,是否需要達到4個99(99.99%),需要支撐的峰值QPS,是否有業務的集中爆發點,如電商大促

C)團隊的成熟度,一個成熟的團隊可以很好的hold住複雜的開源框架,甚至做定製化開發。

技術選型話題雖然寬泛,但是最能體現體現技術人員的綜合能力,尤其結合業務特點後對技術框架深度和廣度的駕馭能力。

2、Dubbo底層走的是什麼協議,如何處理非同步轉同步?

大部分的Java開發都會直接使用dubbo,而不會去關心其底層一些技術細節,但是一些細節,如dubbo如何對物件進行序列化,用了哪些序列化方式,這些在分散式專案中對提高應用的處理速度,減少網路開銷,都很大幫助。

同時RPC框架裡如何將非同步轉同步,也是需要技術人員非常關注的一面,裡面相關的設計模式,多執行緒程高併發場景都是很多業務系統裡真實需要和借鑑的。

3、Dubbo在高併發高可用等實踐場景需要認真考慮的其他問題

使用了dubbo後,很多人覺得萬事大吉,其實並不是這樣,下面幾點還需要關心,並且這些就是體現你價值的地方

A) dubbo依賴了zooKeeper,但是萬一ZooKeeper宕機了怎麼辦

B) 如果ZooKeeper假死,客戶端對服務端的呼叫是否會全部下線,如果是該如何避免

C) 如何監控duubo的呼叫,並做到優雅的客戶端無感發布

大家可以自行思考,答案不是唯一!

四、自身多年的面試體會

專案中儘量多思考,迎難而上,如碰到複雜的效能,記憶體洩露等問題的問題,往往是提升自己的機會,千萬要仔細研究解決,可以參考其他解決類似問題的文章和實踐經驗,對技術深度的提升是很大的,關鍵時候可以讓你的面試官突然覺得面耳目一新。
重視解決問題的思路和方法,很多時候技術人員可以快速設計一個系統或解決一個問題,但是在資深工程師或面試官眼裡可能並不是最優方案。如何解決?
很多技術人員的專案和技術相對單一,長久以往,容易造成技術思路和視野的狹窄,接觸不到行業最新思路和動態或者當前疑難問題的最佳解決方案。

對於渴望實現技術和職業成長的程式設計師,我為大家準備的兩大福利:

福利1

整理自己的一些超有價值的架構進階視訊資料,以及「Java開發參考書籍」「Java開發學習圖譜」「大資料容器資料庫架構技術文件」等......

適聽人群:Java初、中級開發工程師!

免費領取視訊方式:

點選連結加入群聊【架構華山論劍:836442475】:https://jq.qq.com/?_wv=1027&k=58Z7Vth

相關推薦

北京面試Java程式設計師33面試通知面試經驗彎道超車

很多人看到這個,估計說我是來炫耀的,實際並非如此,看我一一道來:由於同學在這邊,所以過來看看,以純屌絲形象腳踏一雙人之託鞋,手拎

心疼程式設計師帶校招生被問幾十回他百度還不樂意累成狗!

記得學生時代的時候,老師經常跟我們說:“同學們,不懂的就要問,別一個人鼓弄!”那時候我們都積極的向老師提問。而到了入職上班後,自己帶新人時候才明白這有多煩,特別是那種自己不肯動腦筋先過一道再來問的新人,那簡直就能夠被煩死! 最近就有一名程式設計師網友在網上吐槽自己手下的一個新人,程式碼功底一點都

#Java程式設計師段有序集合程式碼卻不知有啥問題求幫忙看看

在我們剛開始學習程式設計的時候,會出現一些“細節”上的錯誤,這些錯誤可能並不是我們程式碼中有錯誤,而是對於一些概念還不清楚所導致的,然而程式設計偏偏又是一個需要嚴謹的技術活,所以這些細節上的失誤就會造成程式執行出錯! 近日就有一位Java程式設計師寫了一段有序集合程式碼,可是卻不知道出了

調查Java程式設計師最傷心C++程式設計師最年老

說起我們對程式設計世界現有的刻板印象,你一定聽說過類似於沒有人喜歡用Java編碼或者使用C ++都是老人家,等等這樣的話。為了分析這些刻板印象背後的真相,Trestle Technology的資料工程師寫了一個工具。 不知道你有沒有聽說過微軟的Project Oxford,它的Face API可

Buggy Java CodeJava程式設計師最容易犯的10錯(第一部分)

翻譯:叩丁狼教育吳嘉俊 Java語言最開始是為了互動電視機而開發的,隨著時間的推移,他已經廣泛應用各種軟體開發領域。基於面向物件的設計,遮蔽了諸如C,C++等語言的一些複雜性,提供了垃圾回收機制,平臺無關的虛擬機器技術,Java創造了一種前所未有的開發方式。另一方面,得益於Java提出的“一次編

Buggy Java CodeJava程式設計師最容易犯的10錯(2)

本文翻譯:吳嘉俊,叩丁狼高階講師。  Java語言最開始是為了互動電視機而開發的,隨著時間的推移,他已經廣泛應用各種軟體開發領域。基於面向物件的設計,遮蔽了諸如C,C++等語言的一些複雜性,提供了垃圾回收機制,平臺無關的虛擬機器技術,Java創造了一種前所未有的開發方式。另一方面,得益

#大神的分享Java程式設計師的學習生涯中各個階段的建議

每一個新手在學習程式設計的時候,都會有一個迷茫期,不知道學這些知識能夠幹什麼,對於未來應該從事什麼樣的工作也很迷茫,所以作者特意寫了這一篇文章來給大家解釋。 如果有想學習java的程式設計師,可來我們的java學習扣qun:79979,2590免費送java的視訊教程噢!我整理了一份適合18年學

java常見面試題Java程式設計師面試題(六)

不知不覺中,已經將面試題更新到第六篇了,龐大的java面試題庫,想要刷完似乎不大可能,需要一點一點的積累。 1、java 中會存在記憶體洩漏嗎,請簡單描述。   答:會;存在無用但可達的物件,這些物件不能被GC 回收,導致耗費記憶體資源。 2、靜態變數和例項變數的區別?

阿里架構師經驗分享Java程式設計師5年職業路線指南

  沒有沒免費的Java架構師進階資料領取?(文末提供獲取方法) 阿里架構師技術分享:分散式任務排程系統的實現 阿里架構師技術分享:承載千萬級併發的分散式架構設計思想 阿里架構師技術分享:併發程式設計之手寫阻塞式執行緒安全佇列 阿里架構師技術分享:面試

轉發Java程式設計師必備的Intellij外掛

點選File–>Settings–>Plugins–>然後搜尋GsonFormat,點選下載並安裝。自定義個javabean(就是新建一個名字最好帶bean的無內容的class檔案),然後在該檔案處點選–>code–>Generate–>GsonFormat(或者直接按al

java常見面試題Java程式設計師面試題(五)

本期的java面試題是偏向資料庫方面的,對相關技術知識匱乏的,或者對這方面不大自信的同學,面試之前可以參考一下這套題,這只是節選,試運營一下,如果不能滿足你們的需求,可以直接評論留言! 1、檢視的優缺點 答:優點: 1)對資料庫的訪問,因為檢視可以有選擇性的選取資料庫

java常見面試題Java程式設計師面試題(四)

上一次更新的java面試題,很多小夥伴反應很簡單,其實上一期更新的就是更偏基礎的面試題,但這並不意味著,面試就這麼簡單,在java的學習中,有從Java基礎、框架、設計模式等等都是重點學習的點。在本文的面試題分享中,我們循序漸進,儘量挑一些重點的內容來分享! 1、當一個物件

想進阿里、京東、美團面試java程式設計師看過來

第一個問題:阿里面試問些什麼 參加阿里的社招面試,而社招不同於校招,問題的範圍其實是很隨機的。因為能參加一些比較知名的網際網路公司社招的人,70%以上都會有個3-5年的經驗。這倒不是說一兩年經驗的同學沒有機會進這些公司,而是因為這種公司,大部分情況下只招一些比

大神的分享Java程式設計師的學習生涯中各個階段的建議

 第一部分:對於參加工作一年以內的同學。   恭喜你,這個時候,你已經擁有了一份Java的工作。這個階段是你成長極快的階段,而且你可能會經常加班。   但是加班不代表你就可以鬆懈了,永遠記的那句話,從你入行那一刻起,你就要不停的學習。在這一年裡,你至少需要看完《Java程

想進BAT面試Java程式設計師 看完這個你們還覺得offer很難拿嗎???

阿里面試問些什麼?參加阿里的社招面試,而社招不同於校招,問題的範圍其實是很隨機的。因為能參加一些比較知名的網際網路公司社招的人,70%以上都會有個3-5年的經驗。這倒不是說一兩年經驗的同學沒有機會進這些公司,而是因為這種公司,大部分情況下只招一些比較資深的開發和應屆生,而不招

月薪兩萬的程式設計師的工作是怎麼樣的?996加班制度大曝光

程式設計師這個行業,加班幾乎成為了一種常態,典型的有996,如果你不清楚996是什麼,這裡普及一下: 996工作制是指工作日早9點上班,晚上9點下班,中午和晚上休息1小時(或不到),總計10小時以上,並且一週工作6天的工作制度,是非常辛苦且不人道的工作制度。 很多都是無償加班,連補休

java程式設計師如何通過阿里、百度的招聘面試

1.Java語言基礎 java語法基礎java類與物件java繼承與多型面向物件高階特性異常處理多執行緒輸入與輸出IO泛型,reflection,annotation; 此類書籍中,最經典無過於這本"Thinking in java",至少多看幾遍,經典就是經典! 2.Java基本類庫 java.l

分享一線企業BAT面試Java程式設計師建議

第一個問題:阿里面試問些什麼 參加阿里的社招面試,而社招不同於校招,問題的範圍其實是很隨機的。因為能參加一些比較知名的網際網路公司社招的人,70%以上都會有個3-5年的經驗。這倒不是說一兩年經驗的同學沒有機會進這些公司,而是因為這種公司,大部分情況下只招一些比

面試JAVA程式設計師麵霸之初級知識

該系列文章也是來自於一篇CSDN的gitchat,將其中的答案補全,本篇是最簡單的初級知識。 1,面向物件和麵向過程的區別和聯絡。     網上有個蓋澆飯和蛋炒飯的例子比較好。     面向過程是蛋炒飯,混在一起,一個一個炒。     面向物件是蓋澆飯,飯和菜分開,想要換掉

關於springboot2.0的helloworld專案啟動報錯問題的解決(小白java程式設計師枚)

Failed to instantiate SLF4J LoggerFactoryReported exception:java.lang.NoClassDefFoundError: ch/qos/logback/core/spi/LifeCycleat java.lang.ClassLoader.defin