Java高級開發工程師面試考綱

来源:http://www.cnblogs.com/8hao/archive/2016/03/02/5235646.html
-Advertisement-
Play Games

如果要應聘高級開發工程師職務,僅僅懂得Java的基礎知識是遠遠不夠的,還必須懂得常用數據結構、演算法、網路、操作系統等知識。因此本文不會講解具體的技術,筆者綜合自己應聘各大公司的經歷,整理了一份大公司對Java高級開發工程師職位的考核綱要,希望可以幫助到需要的人。 當前,市面上有《Java XX寶典》


如果要應聘高級開發工程師職務,僅僅懂得Java的基礎知識是遠遠不夠的,還必須懂得常用數據結構、演算法、網路、操作系統等知識。因此本文不會講解具體的技術,筆者綜合自己應聘各大公司的經歷,整理了一份大公司對Java高級開發工程師職位的考核綱要,希望可以幫助到需要的人。


當前,市面上有《Java XX寶典》類似的圖書,而且圖書中的內容都著重在講解Java最為基礎的部分,最嚴重的是,裡面有著大量錯誤的內容,極具誤導性。另外,網上也有各種各樣的Java面試題,很多也是著重在Java語言基礎上。實際上,如果要應聘高級開發工程師職務,僅僅懂得Java的基礎知識是遠遠不夠的,還必須懂得常用數據結構、演算法、網路、操作系統等知識。因此本文不會講解具體的技術,筆者綜合自己應聘各大公司的經歷,整理了一份大公司對Java高級開發工程師職位的考核綱要,希望可以幫助到需要的人。

1 Java基礎

1.1 Collection和Map

(1)掌握Collection和Map的繼承體系。

(2)掌握ArrayList、LinkedList、Vector、Stack、PriorityQueue、HashSet、LinkedHashSet、TreeSet、HashMap、LinkedHashMap、TreeMap、WeakHashMap、EnumMap、TreeMap、HashTable的特點和實現原理。

(3)掌握CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentHashMap的實現原理和適用場景。

1.2 IO

(1)掌握InputStream、OutputStream、Reader、Writer的繼承體系。

(2)掌握位元組流(FileInputStream、DataInputStream、BufferedInputStream、FileOutputSteam、DataOutputStream、BufferedOutputStream)和字元流(BufferedReader、InputStreamReader、FileReader、BufferedWriter、OutputStreamWriter、PrintWriter、FileWriter),並熟練運用。

(3)掌握NIO實現原理及使用方法。

1.3 異常

(1)掌握Throwable繼承體系。

(2)掌握異常工作原理。

(3)瞭解常見受檢異常(比如FileNotFoundException)、非受檢異常(比如NullPointerException)和錯誤(比如IOError)。

1.4 多線程

(1)掌握Executors可以創建的三種(JAVA8增加了一種,共四種)線程池的特點及適用範圍。

(2)掌握多線程同步機制,並熟練運用。

1.5 Socket

(1)掌握Socket通信原理。

(2)熟練使用多線程結合Socket進行編程。

2 Java虛擬機

2.1 JVM記憶體區域劃分

(1)掌握程式計數器、堆、虛擬機棧、本地方法棧、方法區(JAVA8已移除)、元空間(JAVA8新增)的作用及基本原理。

(2)掌握堆的劃分:新生代(Eden、Survivor1、Survivor2)和老年代的作用及工作原理。

(3)掌握JVM記憶體參數設置及調優。

2.2 類載入

(1)掌握類的載入階段:載入、鏈接(驗證、準備、解析)、初始化、使用、卸載。

(2)掌握類載入器分類及其應用:啟動類載入器、擴展類載入器、應用程式類載入器、自定義載入器。

3 J2EE

(1) 掌握JSP內置對象、動作及相關特點和工作原理。

(2) 掌握Servlet的特點和工作原理。

(3) 掌握Spring框架的IOC和AOP實現原理(反射和動態代理)。

(4) 至少掌握一個MVC框架(Spring MVC,Struts等)的工作原理,並熟練運用。

(5) 至少掌握一個ORM框架(Hibernate,MyBatis等)的工作原理,並熟練運用。

4 數據結構與演算法

(1)掌握線性表和樹的特點並熟練運用。

(2)掌握常用排序和查找演算法:插入排序(直接插入排序、希爾排序)、選擇排序(直接選擇排序、堆排序)、交換排序(冒泡排序、快速排序)、歸併排序,順序查找、二分查找、哈希查找。

(3) 熟練運用常見排序和查找演算法思想解決編程問題。

(4)瞭解幾大基本演算法:貪心演算法、分治策略、動態規劃。

5 電腦網路

(1)掌握網路的分層結構,及每層的功能特點。

(2)掌握TCP/IP的通信原理(三次握手、四次揮手)

6 資料庫

(1)掌握複雜的SQL語句編寫。

(2)掌握資料庫的優化(SQL層面和表設計層面)。

(3)至少掌握一款資料庫產品。

(4)熟悉高併發、大數據情況下的資料庫開發。

7 Web技術

(1)掌握AJAX的工作原理。

(2)至少熟悉一款JS框架(比如JQuery)。

8 設計模式

(1)熟悉常見的設計模式。

(2)會將設計模式理論應用到實際開發中。

9 Linux

(1)熟練運用Linux常見命令。

(2)熟悉Linux操作系統基本概念及特點。

(3)熟悉Shell腳本。

10 操作系統

(1)掌握操作系統的進程管理。

(2)瞭解操作系統的I/O。

11 正則表達式

(1)掌握常見正則表達式符號。

(2)熟練運用正則表達式解決實際問題(比如匹配電話號碼、郵箱、功能變數名稱等)。

問啊-定製化IT教育平臺牛人一對一服務,有問必答,開發編程社交頭條 官方網站:www.wenaaa.com

QQ群290551701 聚集很多互聯網精英,技術總監,架構師,項目經理!開源技術研究,歡迎業內人士,大牛及新手有志於從事IT行業人員進入!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、為服務創建安裝程式 1)、返回到 Service1 的“設計”視圖。 2)、單擊設計器的背景以選擇服務本身,而不是它的任何內容。 3)、在“屬性”視窗中,單擊屬性列表下麵灰色區域中的“添加安裝程式”鏈接。 預設情況下,向您的項目添加包含兩個安裝程式的組件類。將該組件命名為ProjectInsta
  • 先來點與標題不相關的: CLR支持兩種程式集:弱命名程式集和強命名程式集。 兩者的區別在於強命名程式集使用發佈者的公鑰和私鑰進行簽名。由於程式集被唯一性地標識,所以當應用程式綁定到強命名程式集時,CLR可以應用一些已知安全的策略。 程式集可以採用兩種方式部署:私有或者全局。弱命名程式集只能以私有方式
  • 錯誤狀況: 下麵內容來自網路,自己也另有補充 原因:在安裝Framework v4.0之後,再啟用IIS,導致Framework沒有完全安裝 解決辦法:開始->所有程式->附件->滑鼠右鍵點擊“命令提示符”->以管理員身份運行-> 32位的win7:%windir%\Microsoft.NET\Fr
  • ------------------------------------------------ 重點提示: 1、程式的註釋:單行註釋、多行註釋; ------------------------------------------------ 第1節 .Net學習路線及幾個容易混淆的概念 C#過程
  • 在我們的程式中,經常會有一些耗時較長的運算,為了保證用戶體驗,不引起界面不響應,我們一般會採用多線程操作,讓耗時操作在後臺完成,完成後再進行處理或給出提示,在運行中,也會時時去刷新界面上的進度條等顯示,必要時還要控制後臺線程中斷當前操作。 以前,類似的應用會比較麻煩,需要寫的代碼較多,也很容易出現異
  • 函數功能:該函數將指定的消息發送到一個或多個視窗。此函數為指定的視窗調用視窗程式,直到視窗程式處理完消息再返回。該函數是應用程式和應用程式之間進行消息傳遞的主要手段之一。 函數原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM
  • 完成Model中的findAll/updateAll/deleteAll/insert/update和delete方法~~
  • // 字串含中文 by Aone function IsIncludeChinese(Str: String): Boolean; var i: Integer; UCS4Str: UCS4String; begin Result := False; UCS4Str := UnicodeString
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...