本文目錄一覽:
- 1、Java高級軟件工程師會面試哪些問題
- 2、作為一個面試官,我會問初級java工程師哪些問題?
- 3、一般java面試都會問些什麼問題
- 4、求JAVA軟件工程師面試題,最好比較齊全,發郵箱xuyang211@yeah.net,好的話加分哦。
- 5、應聘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)熟練運用正則表達式解決實際問題(比如匹配電話號碼、郵箱、域名等)。
作為一個面試官,我會問初級java工程師哪些問題?
初級java工程師多數是剛畢業或者工作1,2年的新人。對於新人,面試中基礎問題會問道很多,因為先要考察這個人的基礎。
關於基礎類的題目,我在面試初級java工程師的時候一般會問下面兩大類問題,每類5個題目,這樣下來我就基本可以了解這位工程師的程度了。
java基礎類
面向對象基礎類
java基礎類
1.描述一下java的訪問修飾符,和它們之間的區別?
回答:如果可以回到出public,private,protected,就算是ok;回答出default的,加分。
2. int和Integer 區別?
回答:如果回答出Integer是int的包裝類,就算ok;回答出其他的基本類型和它們相應的包裝類,加分。
3.如何定義一個單精度浮點類型的變量?
回答:float 變量名=1.2f ;回答出不加最後的f為雙精度浮點類型,加分
4. equals和==的區別?
回答: equals是值比較(一般處理java開發都會這麼說,算是ok的)而==是引用比較(或者對象比較);回答equals是可以自定義的,加分
5.將一個數組作為參數傳遞到一個方法中,在方法中,數組內的元素值被改變了,那麼在方法外部,這個數組內的元素是否也被改編了?
回答:是,因為java方法中傳遞的是引用,就ok。如果回答中,將引用說明了自己的理解,加分。
面向對象基礎類
1.重載和重寫的區別?
回答:這個看個人理解,理解沒有什麼大的偏差就ok;回答出多態相關的,加分。
2.構造方法能不能重載?
回答:可以重載,ok;回答構造方法時不能繼承的,所以如果要調用指定父類構造器就必須重寫子類構造方法,加分。
3.抽象方法(abstract)是否可以被final、static、native修飾?
回答:都不可以,因為抽象方法是必須子類實現的,final方法時不可以被重寫的,static是父類必須實現的方法,native是本地語言實現的方法。回答出封裝和繼承相關的,加分
4.當父類引用指向子類對象的時候,子類重寫了父類方法和屬性,那麼當訪問屬性的時候,訪問是誰的屬性?調用方法時,調用的是誰的方法?
回答:訪問的是父類的屬性,調用的是子類的方法,ok;如果可以畫圖解釋的話,加分
5.抽象類和接口有什麼異同?
回答:一些類定義上的區別,ok;回答在應用過程中,如何根據業務定義接口,加很多分
最後,如果前面問題回答的不錯,會補充兩個編程習慣問題。
1.在你寫過的代碼中,你寫過超過2層的循環嗎,怎麼實現的?
回答:沒有,就算ok;如果回答有,聽一下實現,如果原因說不出來,扣分。
2.在你寫過的代碼中,if語句最多嵌套了幾層,最多有多少分支,怎麼實現的?
回答:3層以下,就算ok;如果回答3層以上,聽一下實現,如果原因說不出來,扣分。
4,5個分支,就算ok;如果回答5個分支以上,聽一下實現,如果原因說不出來,扣分。
最後兩個題其實比較陷阱,但是正是一個反向的思考才能了解面試者之前的工作狀態。
如果面試者在平日里就有好的習慣,自然不用擔心。
一般java面試都會問些什麼問題
1、請你自我介紹一下你自己?
回答提示:一般人回答這個問題過於平常,只說姓名、年齡、愛好、工作經驗,這些在簡歷上都有。其實,企業最希望知道的是求職者能否勝任工作,包括:最強的技能、最深入研究的知識領域、個性中最積極的部分、做過的最成功的事,主要的成就等,這些都可以和學習無關,也可以和學習有關,但要突出積極的個性和做事的能力,說得合情合理企業才會相信。
企業很重視一個人的禮貌,求職者要尊重考官,在回答每個問題之後都說一句“謝謝”,企業喜歡有禮貌的求職者。
2、你覺得你個性上最大的優點是什麼?
回答提示:沉着冷靜、條理清楚、立場堅定、頑強向上、樂於助人和關心他人、適應能力和幽默感、樂觀和友愛。我在北大青鳥經過一到兩年的培訓及項目實戰,加上實習工作,使我適合這份工作。
3、說說你最大的缺點?
回答提示:這個問題企業問的概率很大,通常不希望聽到直接回答的缺點是什麼等,如果求職者說自己小心眼、愛忌妒人、非常懶、脾氣大、工作效率低,企業肯定不會錄用你。絕對不要自作聰明地回答“我最大的缺點是過於追求完美”,有的人以為這樣回答會顯得自己比較出色,但事實上,他已經岌岌可危了。
企業喜歡求職者從自己的優點說起,中間加一些小缺點,最後再把問題轉回到優點上,突出優點的部分,企業喜歡聰明的求職者。
4、你對加班的看法?
回答提示:實際上好多公司問這個問題,並不證明一定要加班,只是想測試你是否願意為公司奉獻。
回答樣本:如果是工作需要我會義不容辭加班,我現在單身,沒有任何家庭負擔,可以全身心的投入工作。但同時,我也會提高工作效率,減少不必要的加班。
5、你對薪資的要求?
回答提示:如果你對薪酬的要求太低,那顯然貶低自己的能力;如果你對薪酬的要求太高,那又會顯得你分量過重,公司受用不起。
一些僱主通常都事先對求聘的職位定下開支預算,因而他們第一次提出的價錢往往是他們所能給予的最高價錢,他們問你只不過想證實一下這筆錢是否足以引起你對該工作的興趣。
求JAVA軟件工程師面試題,最好比較齊全,發郵箱xuyang211@yeah.net,好的話加分哦。
我有的喲。嘿嘿
UMLStart 5.0
——
面向對象的編程語言有封裝、繼承 、抽象、多態等4個主要的特徵。
封裝
是保證軟件部件具有優良的模塊性的基礎,封裝的目標就是要實現軟件部件的“高內聚、低耦合”,防止程序相互依賴性而帶來的變動影響.
讓變量和訪問這個變量的方法放在一起,將一個類中的成員變量全部定義成私有的,只有這個類自己的方法才可以訪問到這些成員變量,這就基本上實現對象的封裝,就很容易找出要分配到這個類上的方法了,就基本上算是會面向對象的編程了。
把握一個原則:把對同一事物進行操作的方法和相關的方法放在同一個類中,把方法和它操作的數據放在同一個類中。
抽象:
抽象就是找出一些事物的相似和共性之處,然後將這些事物歸為一個類,這個類只考慮這些事物的相似和共性之處,並且會忽略與當前主題和目標無關的那些方面,將注意力集中在與當前目標有關的方面。例如,看到一隻螞蟻和大象,你能夠想象出它們的相同之處,那就是抽象。抽象包括行為抽象和狀態抽象兩個方面。例如,定義一個Person類.
使用抽象可以避免考慮一些與目標無關的細節。我對抽象的理解就是不要用顯微鏡去看一個事物的所有方面,這樣涉及的內容就太多了,而是要善於劃分問題的邊界,當前系統需要什麼,就只考慮什麼。
繼承:
在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,並可以加入若干新的內容,或修改原來的方法使之更適合特殊的需要,這就是繼承。繼承是子類自動共享父類數據和方法的機制,這是類之間的一種關係,提高了軟件的可重用性和可擴展性
多態:
多態是指程序中定義的引用變量所指向的具體類型和通過該引用變量發出的方法調用在編程時並不確定,而是在程序運行期間才確定,即一個引用變量倒底會指向哪個類的實例對象,該引用變量發出的方法調用到底是哪個類中實現的方法,必須在由程序運行期間才能決定。因為在程序運行時才確定具體的類,這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類實現上,從而導致該引用調用的具體方法隨之改變,即不修改程序代碼就可以改變程序運行時所綁定的具體代碼,讓程序可以選擇多個運行狀態,這就是多態性。多態性增強了軟件的靈活性和擴展性
_________________________________________________________________________________________________________________________
1.抽象類可以有構造方法,接口中不能有構造方法。
2.抽象類中可以有普通成員變量,接口中沒有普通成員變量
3.抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。
5. 抽象類中可以包含靜態方法,接口中不能包含靜態方法
6. 抽象類和接口中都可以包含靜態成員變量,抽象類中的靜態成員變量的訪問類型可以任意,但接口中定義的變量只能是public static final類型,並且默認即為public static final類型。
7. 一個類可以實現多個接口,但只能繼承一個抽象類。
_________________________________________________________________________________________________________________________
內部類就是在一個類的內部定義的類,內部類中不能定義靜態成員
_________________________________________________________________________________________________________________________
Linux
創建 目錄 mkdir 加文件名
LS 列表
pwd查看當前位置
cp 加文件名+要複製到的位置
rm 加文件名。刪掉文件
_____________________________________________________________________________________________________________________
javascript
網景公司開發的一種腳本語言,不需要編譯,可寫着頁面,也可以單獨寫一個js文件 ,由瀏覽器解析執行,
其作用是:
數據驗證 與網頁進行交互 獲取瀏覽器的信息
Ajax關鍵技術之一(可以通過javascript,訪問瀏覽器內置的一個對象 XmlHttpRequest)
_____________________________________________________________________________________________________________________
javascript事件處理機制
事件綁訂
類似與java當中註冊監聽器。
事件綁訂的方式有三種方式:
1)綁訂到html標記之上
a id=”a1″ href=”javascript:;” onclick=”f1();”click/a
以上代碼,表示,當點擊click時,產生click事件,
2)綁訂到dom節點之上。
var a = document.getElementById(‘a1’);
a.onclick = f1;
事件冒泡
子節點產生的事件會向上拋給父節點。
如何取消冒泡
event.cancelBubble = true;
_________________________________________________________________________________________________________________________
字節流: inputStream outputStream
字符流: reader writer
=———————————————————————–
JavaBean : 廣義: java類就是JavaBean, 狹義:封裝數據(get set)的java類
——————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————
MVC: == 三層框架開發模式
V 視圖 C控制器 M模型
JSP action JavaBean oracle,Mysql
——————————————————表示層 ———業務層 —————數據層
(struts2 ) (hibernate|OJB|EJB-(cmp)|JDO|)
*模型
(model)
負責業務邏輯 業務數據的加工規則以及保障業務邏輯能夠正常執行所
添加的一些基礎服務,比如事務、安全、日誌、性能等等。
*視圖
(view)
負責表示邏輯 業務數據的展現以及用戶操作的界面。
*控制器
(controller)
負責流程控制邏輯 視圖向控制器發送請求,控制器依據一定的規則,調用對
應的模型來處理請求;模型處理的結果發送給控制器,控
制器選擇合適的視圖,生成相應的界面,提供給用戶。
model:使用 java 類(javabean)或者被容器管理的 javabean(比如 ejb,spring 容器中的
javabean)來封裝。
view:使用 jsp(包括 html、css、javascript)(也可以使用其它技術,比如 FreeMarker
模板技術等等) 。
controller:使用 Servlet/Filter;所有的請求都發送給控制器,控制器依據請求的內容調
用不同的 model來處理(當然,也可以調用同一個 model 的不同方法);控制器依據model
返回的結果,來選擇不同的視圖展示結果數據。
——————————————————————————————————————————————————————————
EJB組件有三種類型
SessionBean(會話Bean),用於封裝業務邏輯
EntityBean(實體Bean),用於封裝對數據庫的操作
MessageDrivenBean(消息驅動Bean),封裝基於消息的處理機制
——————————————————————————————————————————————————————
2.什麼是ORM技術,有何作用和優勢
Object-Relation-Mapping對象關係映射,
用於實現對象和關係數據庫之間的映射,當應用程序需要對
數據庫操作時,只需要對這些對象操作即可.
——————————————————————————————————————————————————————
從文件到內存是輸入流 (read讀取)
從內存到文件是輸出流 (write print)
判斷一個文件是否存在
File f = new File ();
if(f.exists()){
System.out.println(“yes”)
}else{
“No”
}
——————————————————————————————————
啟動線程: start();
Thread線程安全同步: synchronized
hashSet put get remove (線程同步)
實現多線程: 繼承Thread類和實現Runnable接口
實現同步 : synchronized wait notify
——————————————————————————————————————————————————
集合: List: 有順序的,元素可以重複 Set:無順序的,元素不可重複(值不相同) Map
Arraylist
特點:查詢效率高,增刪效率低 HashSet:採用哈希算法來實現Set 接口 唯一性保證
LiskedList TreeSet:在元素添加的同時,進行排序。也要給出排序規則 treeMap
特點:查詢效率低,增刪效率高 HashMap:輕量級 線程不安全允許key 或者value 是null
Hashtable:重量級 線程安全 不允許key 或者value 是null
Collection FrameWork如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)
Map提供key到value的映射
——————————————————————————————————————————————————————————
JDBC(事務處理):setAutoCommit(false)不自動提交
commit 提交
rollback 回滾
————————————————————-
Jdbc中常用的接口
preparedStatement, 表示預編譯的 SQL 語句的對象。 SQL 語句被預編譯並且存儲在 PreparedStatement 對象中。然後可以使用此對象高效地多次執行該語句,可以傳參數,對象時確定sql
callableStatement, 用於執行 SQL 存儲過程的接口。
如果有輸出參數要註冊說明是輸出參數
CallableStatement c=con. prepareCall (“{call getCustomerName(?,?)}”);
c.setString(1,”1″)
statement, 用於執行靜態 SQL 語句並返回它所生成結果的對象,在執行時確定sql
Connection,
ResultSet
————————————————————————————————–
訪問數據庫
1連接Oracle數據庫
com.mysql.jdbc.Driver
Class.forName(“oracle.jdbc.driver.OracleDriver”); //註冊一個數據庫驅動,將驅動加載到當前的JVM中
(jdbc:mysql://127.0.0.1:3306/dangdang)
Connection con=DriverManager.openConnection(“jdbc:oracle:thin:@localhost:1521:DataBase”,”UserName”,”Password”)//鏈接到指定數據庫
preparedStatment ps=Con.preparedStatment(“select * from [table]”);//執行SQL 語句
ResultSet rs=ps.executeQuery(); //保存結果集
While(rs.next) //遍歷結果集
{
Rs.getString(1) 或rs.getString(“字段名”);
}
//關閉流
——————————————————————————————————————————————————————————
WEB
forward :轉發 傳遞request保留上一個頁面中request的所有值
轉發: 保留上次的request
jsp:forward
actionMapping.findForWard(“”);
pageContext.forward();
request.getRequestDispacher(“轉發地址a.jsp”).forward(request,response)
redirect:轉跳 直接改變了瀏覽器的地址
跳轉:不保留上次的request
Response.setRedirect(“轉跳地址”)
什麼是轉發?
一個web組件(servlet/jsp)將未完成的處理及相關的
數據轉交給另外一個web組件繼續完成。最常見的情況
是:一個servlet將加工之後的數據(比如通過查詢
數據庫)轉交給一個jsp來生成相應的界面。
——————————————————————————————————
什麼是cookie
cookie 是一種在客戶端(瀏覽器)維護用戶狀態的狀態管理技術。瀏覽器在訪問服務
器時,服務器發送一個消息頭(set-cookie)及對應的值給瀏覽器,瀏覽器會將該消息頭對應的
值保存到內存或者硬盤上。當瀏覽器下次訪問服務器時,會將這些值再發送給服務器。通過
這種方式來維護用戶的狀態(也就是說,將用戶的狀態寫到了消息頭對應的值裡面)。
創建cookie
Cookie cookie = new Cookie(String name,String value);
response.addCookie(cookie);
————————————————————————————————————————————
什麼是session
瀏覽器訪問服務器時,服務器會創建一個對象
(session對象),並且,將sessionId(是一個字符串,
每一個session對象都有唯一的一個sessionId)以
cookie的方式(默認情況下)發送給瀏覽器。瀏覽器
再次訪問服務器時,會將sessionId發送給服務器,
服務器依據sessionId找到對應的session對象。通過
這種方式,來維護用戶的狀態。
創建 session
方式一: HttpSession session = request.getSession();
方式二: HttpSession session = request.getSession(boolean flag);
———————————————————————————————————————-
URL重寫實現 session技術:
當用戶禁止 cookie 之後,如果實現 session 機制(如果實現 sessionId 的跟蹤),需要使用url重寫機制:
簡單地說,所謂 url 重寫,指的是在 url 地址後面添加 sessionId;
具體來講,要訪問某個需要使用 session機制的組件,不能夠直接在瀏覽器地址欄輸入該組件的地址,
而應該使用服務器生成的該組件的地址(該地址中包含了 sessionId)。當使用服務器生成的
地址去訪問某個組件時,會將 sessionId 傳遞給服務器,服務器通過 sessionId 找到對應的session對象。
使用的方法:
在鏈接,表單提交中使用:
response.encodeURL(String url);
在重定向時,使用:
response.encodeRedirectURL(String url);
比如:
response.sendRedirect(response.encodeRedirectURL(“xxxxx”));
——————————————————————————————————————————————————————
Servlet的體系結構是什麼?
Servlet
GenericServlet
HttpServlet
自定義
JSP和Servlet的區別、共同點、各自應用的範圍
Jsp主要在於頁面的顯示動態生成頁面,可以與html標記一起使用,其還是要生成為一個servlet。
Servlet:主要是控制的處理,如調用業務層,跳轉不同的jsp頁面。
Mvc:
Jsp:v
Servlet:c
——————————————————
自定義的servlet?
extends HttpServlet
並覆蓋doPost或doGet方法
在web.xml中進行部署
運行。。
應聘JAVA工程師,面試官常問一些什麼問題?
面試啊,一般不會問太具體的問題,語法會在筆試里考,然後一般面試分技術面試和綜合面試。一般情況是,你過了筆試,然後去技術面試,然後綜合面試。技術面試官一般是拿着你的簡歷和筆試試卷,一開始會問你那些寫錯的地方。然後問你有什麼項目經驗,如果有,會追問項目的種種,比如你開發了一個圖書館信息管理系統,會問你用了什麼框架,比如你說用了struts,然後他會問你struts的基本原理,你大致講一下對struts框架對servlet的封裝和配置文件,然後他會問一些你數據庫的東西,主要是你數據是如何設計的~。大致是這個流程。然後綜合面試就是問你在學校幹了什麼 班幹部什麼 學校活動 學生會 還有 項目都可以隨便說說,聊聊。
有些技術面試官會問你一些智力題(通常這樣的面試官都不是項目經理,是稍微懂點技術的人力資源,比較2的反正)
技術題目可以在網上搜索,另外就是看程序員面試寶典這本書。
技術面試官還會問你對其他技術,(你會的東西都應該寫在簡歷上),比如你簡歷上說你會Hibernate,那他也會問你Hibernate的相關東西。OOP思想什麼的,設計模式也會涉及的
原創文章,作者:EWS6O,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/128986.html