問題集錄--Java進階軟體工程師面試考綱

來源:互聯網
上載者:User

標籤:資料結構與演算法   大數   運算式   tab   反射   linked   軟體   dwr   揮手   

如果要應聘進階開發工程師職務,僅僅懂得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 Regex

(1)掌握常見Regex符號。

(2)熟練運用Regex解決實際問題(比如匹配電話號碼、郵箱、網域名稱等)。

問題集錄--Java進階軟體工程師面試考綱(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.