03.05 Java後臺開發面試應該如何準備?

李升瑞


Java開發基本上都是進行後端(服務端)開發,根據方向不同開發的側重點還是有所區別,所以準備面試之前需要對工作方向有一個大致的瞭解,這樣才能有針對性的進行準備。

Java開發很大一部分是從事Web後端開發,做Web後端開發需要準備的內容比較多,大致分為以下幾個部分:

  1. Java Web開發的基本組件,包括Servlet、JSP、JavaBean,同時要了解Web容器(服務器)的功能細節:清楚Web應用程序的生命週期管理以及請求處理流程:
  2. MVC框架的功能劃分,包括每個部分的實現技術描述:清楚每個組成部分的具體代碼流程,比如控制端的操作流程細節:接收用戶請求——驗證用戶數據——功能判斷——創建業務對象——功能調用——封裝對象——跳轉到視圖端:

  3. Java操作數據庫,瞭解JDBC的基礎類:瞭解基本的JDBC開發流程(驅動加載、數據源定義、連接創建、容器創建、執行Sql、關閉資源):瞭解DAO的應用(對象定義、接口定義、實現類定義、工廠類定義)、數據庫連接池的應用等。

  4. Java常見開發模式,包括工廠模式、觀察設計模式、單例模式等等,掌握Java開發的常見模式對初級程序員來說是很重要的,Java中定義了23個模式,這些經典模式能讓初級程序員構建出穩定的應用。
  5. 消息中間件的概念及使用,比如JMS的使用。JMS是Java中一個重要的概念,通過JMS能夠創建Java的消息中間件:

  6. 分佈式開發的概念及使用,比如RMI的使用:RMI包含三個大的組成部分:接口的定義、服務類的定義以及客戶類的定義,每一個部分都有固定的細節需要掌握(細節可以參考我之前在頭條上寫的關於RMI的文章)。
  7. 開源框架的使用,比如SpringMVC。目前在服務端使用SpringMVC進行開發是很多程序員的選擇,所以掌握SpringMVC是很有必要的。
  8. EJB的概念,比如會話Bean、實體Bean、消息驅動Bean的概念及應用(選看):這部分內容能瞭解更好,不瞭解也沒有太大影響。

Java除了做Web後端開發還可以做大數據以及android app的開發,如果從事大數據開發需要對算法有深入細緻的瞭解,比如常見的KNN算法、決策樹、樸素貝葉斯、迴歸等。

如果對Java編程感興趣可以關注我,我在頭條上寫了關於Java開發的系列文章,以後會陸續更新最新的Java技術。



IT人劉俊明


首先不知道你要面試的是那個級別的Java程序師,那面主要從要撐握的主要技能方面來說一下。

spring系列

spring框架是做Java框架基本避不開的基礎系列,意思是說學好Spring對後面的學習是非常重要的基礎。

Spring是一個輕量級的控制反轉(IoC)和麵向切面(AOP)的容器框架。
輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小隻有1MB多的JAR文件裡發佈。並且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴於Spring的特定類。
控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。

面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們並不負責(甚至是意識)其它的系統級關注點,例如日誌或事務支持。

而由於spring是Java的一個基礎框架,所以有很多Java上的其它方案可以在spring中集成,對於Java來說spring 非常重要。

數據庫

數據庫基本也是無論大小項目都需要的一個環節,因為數據庫都要要持久化。

國內常用的數據庫主要是Mysql。

mysql的主要學習點:

1、如何優化sql語句。

2、如何按照場景使用範式設計還是非範式設計。

3、學習事務。

4、主從庫。

5、分區。

6、分庫分表。

產品發佈

如果公司產品還在單點階段那麼通過人工發佈還沒有什麼問題,如果公司產品已處在多點或Soa等微服務階段再通過人手打包或發佈就會不太合理。

Maven

maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命週期階段(phase)中插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然後Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。

通過maven構建的產品,再通過持續集成工具進行自動化發佈。

-----------------------------------

本人現處廣州從事互聯網工作多年,資深技術人員、管理人員。願結識有互聯網業務的技術人員或企業人員。


科技大咖的Vitamin


1 準備下基本的數據結構相關的:如鏈表/二叉樹等常見問題,排序等等

2 各個公司的面試風格可能不一樣,提前找點相關的,心裡不慌

3 java相關的,如jvm底層,設計模式等等

4 後臺開發相關的,架構設計/MVC/數據庫/併發/分佈式/消息隊列/rpc等等

5 開源框架如果有了解的話,再複習一下

6 做過的項目,這個好好準備一下

7 可以找幾家面面試試,要做好每次的總結


小生經驗談


很多Java程序員在面試時,通常會遇到以下幾個問題(幾個比較經典的)!下面,跟著我一起來看看具體是哪幾個問題吧!

1、自我感覺自己的Java的技術不錯,但是面試往往不如人意;

2、對面試官提出的問題很懵,不知道它問的是什麼?

3、面試才開始,有些面試官就瘋狂地從知識基礎的開始詢問;

4、一些面試官一直在問有關業務場景的問題,完全不知道面試前要準備什麼。

面試(無論是為了找工作還是升職)是我們每個人都無法逃避的事情。有時候,與其一味寫代碼,不如提升一下自己的面試技巧。我特意蒐集了很多信息,整理,現在分享給大家!

1、Java的基本知識很重要。

能否熟練掌握Java基礎知識,是一項被許多大公司高度重視的基本能力,但總有人追求高深的技術,而忽略它。如果您的底層知識紮實,一套完整的框架知識,這將會為您未來所有的面試打下堅實的基礎。

2、不要答非所問,明確面試提問的意圖

面試官針對不同的Java崗位要求,對能力考察的重點有些差異!

如果你是參加校招,會重點看到你的基本知識,邏輯思維,更多以挖掘潛力為主;

如果你是初級Java工程師,你需要注重基本知識的應用和自身掌握知識的廣度;

對於資深或高級Java工程師來說,更需要對基本原理有深刻的理解,並且能夠靈活地使用各種知識,一般以綜合能力為主。

3、瞭解Java應用能力考察點和加分項

不同類型的公司對候選人的能力需要而不同。對於社交門戶,Java工程師的考察知識是大規模和高併發場景的應用和體系結構能力。

O2O行業將重點放在對求職者綜合能力的考察;

互金更喜歡具有縝密的邏輯思維和在高可用性安全領域經驗豐富的候選人。

因此,為了提高面試合格率,達到事半功倍的效果,面試前應根據公司類型和崗位要求進行特殊準備。

綜合以上我分享的這三個維度準備面試,通過率就會大大提高。但是,如果你真的想輕鬆地應對面試,還需要和大工廠的面試官進行溝通交流,瞭解更多關於面試的核心技能。這樣,您就能更好地瞭解自己的弱點,清晰考察的要點。

面試是一個交流的過程,千萬不能生搬硬套,要根據具體情況分析,提出合適的問題,比如從公司工作,團隊,客戶等工作相關的內容提出問題,那麼就不會有太多的錯誤。


千鋒武漢


java開發從事B/S的後臺開發,面試技術點:

  1. java基礎知識

  2. java開發相關的框架,Spring、SpringMVC、Mybatis等,微服務SpringCloud、Dubbo等

  3. 非關係星數據庫redis,MongoDB等

  4. svn/gid版本管理

  5. 技術面得差不多,主要就是看項目經驗了


許記程序鋪子


起碼先準備下面試題哈。

阿里巴巴Java面試題(一)

1、String和StringBuffer的區別

2、gc的概念,如果A和B對象循環引用,是否可以被GC?

3、Java中的內存溢出是如何造成的

4、String s = “123”;這個語句有幾個對象產生

5、Error、Exception和RuntimeException的區別,作用又是什麼?

6、列舉3個以上的RuntimeException

7、reader和inputstream區別

8、hashCode的作用

9、Object類中有哪些方法,列舉3個以上(可以引導)

10、char型變量中能不能存貯一箇中文漢字?為什麼?

11、列舉幾個Java Collection類庫中的常用類

12、List、Set、Map是否都繼承自Collection接口?

13、HashMap和Hashtable的區別

14、HashMap中是否任何對象都可以做為key,用戶自定義對象做為key有沒有什麼要求?

15、interface 和 abstrat class的區別 是否可以繼承多個接口,是否可以繼承多個抽象類

16、 啟動一個線程是用run()還是start()? 多線程有幾種實現 同步和併發是如何解決的 什麼叫守護線程,用什麼方法實現守護線程(Thread.setDeamon()的含義) 如何停止一個線程? 解釋是一下什麼是線程安全?舉例說明一個線程不安全的例子。解釋Synchronized關鍵字的作用。 當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?

17、瞭解過哪些JDK8的新特性,舉例描述下相應的特性?

18、對sql進行優化的原則有哪些?

19、servlet生命週期是生命與cgi的區別?

20、StringBuffer有什麼優勢?為什麼快?

阿里巴巴面試題(二):

1.介紹你做過的項目,用到的技術,涉及到的模塊,然後從項目中問各種技術實現的細節(為了確保你是真的懂了).

2.看你的試卷,喊你講解做題的思路,以及這樣結果的原因.(考的是各位的java基礎知識了,這點是繞不過去的,懂了就懂了啊,只有平時多看書)

3.團購6位驗證碼以及團購成功後,發送到你手機上的條碼的實現方式.(第一個問題我說用隨機數+時間來驗證.第二個問題老實說,我也沒答上來,我說用序列,面試官說序列到後期20位以上的時候,用戶體驗很差的)

4.淘寶上是如何保證庫存和訂單之間的數據準確性的.(考點是分佈式事務,這個問題我也沒答上來,最後他問我有什麼問題問他的時候,我就反問的這個問題,面試官人挺好的,給我耐心的講解了一遍淘寶的實現方式以及

epay的實現方式. 淘寶是通過分佈式事物,中間用了一個叫協調者角色的程序,當那邊點擊購買時,會庫存減一,保存一條預扣的狀態,但是是個預準備狀態,然後做成功後,協調者會在另一個數據庫生成訂單,然後這個訂單也是預狀態,等兩邊都準備好以後,通知協調者,又協調者統一完成這2個數據庫的事物,從而達到完成一筆交易的目的,若其中一方失敗,則將預扣的數字返回到庫存從而實現類似回滾的操作.)

5.索引的原理.能否構建時間索引.時間索引構建後會存在什麼問題.(索引原理我是回答的堆表索引的構建原理以及查詢原理,但是關於時間索引的問題,我也沒回答出個所以然來,看面試官的反饋,好像回答得不夠好吧)

6.你們數據庫的數據量有多大,(回答:我們是電信方面的系統,表上億的數據很正常).問:如果保證效率?

(我是如此回答的,各位自行結合自身的情況參考.答:後臺J OB程序會定期備份,把生產表數據移走,然後備份表也會再備份一次,如此剃度的備份,保證生產庫的數據是最小的.然後備份表採用分區和子分區,加上構建戰略索引(分析系統的sql,常用

查詢字段構建複合索引,以減少每次查詢時對錶的訪問次數)).

7.SQL注入的原理以及如何預防,並舉例.(這個相對簡單,網上一搜一大片)

8.使用過Memcache麼? 用在項目中哪些地方? (答,在門戶主機上使用,緩存session,分佈式的時候,統一訪問這臺主機驗證用戶session是否存在,來維持回話的狀態和實現回話同步.又追問:java代碼中如何實現訪問門戶服務器的這個session池子的? 幾年前的代碼,確實忘記了..於是坦白的說,記不清楚了 )

這些是主要的問題,當你回答一個大問題時中間還有很多比較碎的追問性質的小問題,總體給我的感覺是,氛圍很輕鬆+愉快的,技術層面上還是需要你真正的理解透徹一些關鍵技術點,才能做到應付各種追問和給出滿意的答案吧.如果只是一知半解想去矇混過關肯定是不行的,畢竟在支付寶的技術大牛面前,多追問幾句,也就把你逼到死角了.

還有一點比較重要的感覺就是,他們比較在意你是否瞭解當下的一些比較熱的技術點,比如淘寶的秒殺,是如何保證高併發下的安全性和性能,新浪微博那種大數據量的發送,怎麼就保證正確性和時效性的.

阿里巴巴面試題(三):

1.談談你對HashMap的理解,底層原理的基本實現,HashMap怎麼解決碰撞問題的?

2.開發中用了那些數據庫?回答mysql,儲存引擎有哪些?然後問了我悲觀鎖和樂觀鎖問題使用場景、分佈式集群實現的原理。

3.springmvc和mybatis的工作原理,有沒有看過底層源碼?

4.熟悉IO麼?與NIO的區別,阻塞與非阻塞的區別

6.海量數據分析。

7.線程安全和非線程安全。

8.HTTP2.0、thrift。

9.java反射應用

10.分佈式事務一致性。

11.nio的底層實現。

12.jvm基礎是必問的,jvm GC原理,JVM怎麼回收內存。

13.API接口與SDI接口的區別

14.dubbo如何一條鏈接併發多個調用。Dubbo的原理,序列化相關問題。

15.用過哪些中間件。

16.做過工作流引擎沒有。

17.以前的工作經歷,自己覺得出彩的地方

18.線程池的一些原理,鎖的機制升降級

19.從系統層面考慮,分佈式從哪些緯度考慮

20.Hadoop底層怎麼實現

21.threadLocal,線程池,hashMap/hashTable/coccurentHashMap等

22.秒殺系統的設計

23.虛擬機,IO相關知識點

24.Linux的命令

25.一個整形數組,給定一個數,在數組中找出兩個數的和等於這個數,並打印出來,我寫的時間複雜度高,要求O(n)。

26.n個整數,找出連續的m個數加和是最大。

27.更重視開源技術

28.數據庫鎖隱原理

29.1000個線程同時運行,怎麼防止不卡

30.並列的併發消費問題)

31.高併發量大的話怎麼處理熱點,數據等

32.如何獲取一個本地服務器上可用的端口

33.流量控制相關問題

34.數據庫TPS是多少,是否進行測試過

35.緩存擊穿有哪些方案解決

36.Java怎麼挖取回收器相關原理

37.Java的集合都有哪些,都有什麼特點

38.分佈式鎖,redis緩存,spring aop,系統架構圖,MySQL的特性

39.場景,同時給10萬個人發工資,怎麼樣設計併發方案,能確保在1分鐘內全部發完 打個比方會提出類似的場景

1-3頁面試題,第4頁筆試題加Java招聘信息。[page]

支付寶筆試題

(1). cookie 和 session 的區別

cookie機制採用的是在客戶端保持狀態的方案,

而session機制採用的是在服務器端保持狀態的方案。

1、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。

2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙

考慮到安全應當使用session。

3、session會在一定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能

考慮到減輕服務器性能方面,應當使用COOKIE。

4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。

5、將登陸信息等重要信息存放為SESSION

其他信息如果需要保留,可以放在COOKIE中

(2). JVM 內存模型

(3). SQL注入的原理

(4). . 悲觀鎖 和 樂觀鎖

(5). . 讀程序,輸出結果. 關於treemap的

(6). . linux 基礎命令,統計日誌中的信息

(7). . java 分佈式集群

(8). . 一道設計題,具體到數據庫的表.大概是淘寶的搜索中,輸入手機,會出來很多類型,按品牌按價格區間按手機種類.


海哥聊娛樂圈內事


java基礎掌握好,多線程,IO以及網絡編程,另一個就是你的項目經驗,最好有開發和項目上線後的整個迭代的一個經驗,還有就是你對未來的規劃這一點也很重要,體現了你個人對待這份職業的一個態度,總之,面試中會遇到很多種情況,個人建議是如果你感覺自己能力夠強,那麼久如實走心的回答(工資可以稍微多點哈哈😄),如果對自己能力不自信的話,那麼更應該負責任的進行交流。


建網站後臺開發


首先Java後臺開發相關的理論基礎和相關項目經驗肯定要準備充足。

第二,瞭解你所要面試的那家公司的開發項目,當然做過類似項目更有經驗了。

最後是你個人的面試準備,涉及到每個人都是不一樣的。最重要的是體現個人的能力。

天津華信智原 專注大學生,致力於人工智能、大數據商業項目實訓。Java軟件開發、大數據分析、Python+AI人工智能、UI設計(平面設計、網頁設計、APP設計、交互設計)、網絡營銷(新媒體運營、SEM競價推廣、SEO優化)、PHP開發、web交互式開發、跨境電商(全面系統學習電商) 現網盤有全套課程學習資料,想要的關注分享私發


華信智原天津IT達人



Java實戰技術


1 項目經驗。你做過什麼項目,項目流程和難點在哪,如何解決的。

2 框架知識。例如ssm框架主要工作原理,與傳統的servlet和jdbc相比他們有什麼優點和缺點。

3 為人處事方面了。禮貌,謙遜,平和。


分享到:


相關文章: