{eval=Array;=+count(Array);}
謝謝邀請!
作為一名從業多年的程序員,也出版過Java編程書籍,所以我來回答一下這個問題。
首先,對于剛學習完Java編程的準程序員來說,從實習崗位開始做起是比較現實的選擇,一方面實習崗位不會有太大的工作壓力,另一方面也能夠積累大量的實踐經驗。
對于實習崗位的應聘,主要的問題將集中在以下三個方面:
第一:Java的基本編程思想。Java編程思想的考察主要集中在對于“抽象”的理解,比如類、接口、抽象類分別用于哪些場景,各自的作用是什么等等。另外,面向對象的編程過程、封裝、繼承、多態等都是面試當中經常會遇到的問題。一些大型軟件開發企業往往會在筆試中涉及到IO、多線程和網絡編程(Socket)知識。
第二:數據庫知識。數據庫知識通常是Java實習崗位考察的一個重點,包括基本的Sql語句,數據庫部署等,另外需要掌握JDBC知識。雖然目前通過DAO框架,比如MyBatis,可以完成數據庫映射(OO與OR),但是掌握JDBC的細節還是有一定必要的。隨著大數據應用的逐漸普及,未來Java程序員也需要掌握NoSql數據庫的相關技術。
第三:前端開發知識。雖然Java開發以后端開發為主,但是前端開發知識通常也會涉及到一些,不少開發團隊還比較關注Java程序員的前端開發能力。前端開發知識主要涉及到Html、CSS和JavaScript,其中JavaScript是重點內容,未來JavaScript將是程序員需要掌握的重要技能之一,因為目前JavaScript的應用邊界被不斷擴展,從前端開發到后端開發(Nodejs)再到嵌入式開發,都有JavaScript的身影。
最后,如果應聘Web開發崗位,需要了解Spring框架知識,如果面試大數據開發崗位,還需要了解Hadoop、Spark平臺知識。
我從事互聯網行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大數據和人工智能領域,我會陸續寫一些關于互聯網技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收獲。
如果有互聯網、大數據、人工智能等方面的問題,或者是考研方面的問題,都可以在評論區留言!
關于Java面試,一般應該會問到下面這些問題。
[編程工具]
你常用的編程工具有哪些?這個問題主要是考察你工作的專業性,你是不是具有大型項目的工作經驗.
一般好的,Java的編程工具,你比如說,Eclipse, netbeans, Intelli J 等等。
[局部變量和類變量的區別]
這個問題主要是考察選手對于scope的概念。回答這個問題,
就是局部變量是在方法里面定義的。這個變量只能在方法內部才可以被調用。
類變量呢,可以在類的內部,任何地方都可以被調用。類變量還可以添加一些修飾符,限制或者允許外部類調用。
[什么是繼承? ]
繼承就是說子類可以享有父類的一些定義。
[什么是封裝?]
封裝是通過類定義的方式,把一些方法和數據包裹起來。
[什么是多態?]
多態是指一個對象可以通過具體的引用類型來調用父類和子類的一些方法。
這三個問題主要是考察選手對于面向對象編程的概念。
[ Overriding 和 overloading的區別]
這兩種方法在編程中會經常用到。被問的可能性非常大。
Overriding主要用在子類要使用父類的一些方法定義。方法名必須相同,方法參數必須相同, 返回值類型必須相同。使用這種方法, 子類既可以調用父類的方法也可以添加自己個性化的實現。
Overloading主要用在方法這一層次上。具有同樣的方法名,不同的參數類型, 可能會返回不同的數據類型。
[接口和抽象的區別?]
這個問題在面向對象編程里面也是經常被問到的一個問題。
在Java中,無法實現多類繼承,所以就引入了接口的概念。接口中,主要是類的聲明,沒有實現內容。
抽象類中至少要含有一個抽象方法。這個抽象方法只有聲明沒有實現。抽象類的非抽象方法,需要有實現內容。
[說一下訪問修飾符]
這也是面向對象編程里面非常重要的一個概念。
private, protected, public。沒有修飾符,就是default。
private只能在本類內部訪問。
protected在本類和子類中訪問。
public在其他類中都可訪問。
default在包內可訪問。
[數組和數組列表的區別?]
[String, StringBuilder, StringBuffer的區別? ]
string不可修改。
string builder可修改,線程不安全的。
string buffer可修改,線程安全的。
[HashMap, HashTable 的區別? ]
都是字典類型。
hash map 是線程不安全的。
hash table 是線程安全的。
[Set 相關的問題]
Set里面的數據是唯一的。
sorted set是可排序的。
[Queue 相關的問題]
priority queue先進先出。
[Map相關的問題]
有hash map, linked hash map, tree map.
[Tree相關的問題]
主要是二叉樹, 搜索二叉樹以及平衡二叉樹。
二叉樹是指只有左邊和右邊兩個節點的結構。
搜索二叉樹是指左邊的節點永遠比右邊的節點小。
平衡二叉樹是指左邊的高度與右邊的高度相差不超過1。
這是數據結構相關的問題。
[final相關的問題]
final分別用在變量,類和方法上意味著什么。
final用在類上,這樣的類無法被繼承。
final用在變量上, 這樣的變量無法被修改。
final用在方法上,這樣的方法無法被overriding。
[Exception相關的問題]
一共有幾種exception?
out of index, io, illegal argument, etc.
他們的區別是什么?在什么時候用?
這樣的exception很多。顧名思義,在對應的情況下使用對應的exception。
Runtime exception和compile exception有什么區別?
run time exception,是在運行過程中發生的exception。
compile exception,是指在程序編譯的時候,報出來的exception。
[線程相關的問題]
什么是線程?
線程是進程的一個分支。
如何創建線程?
可以使用thread和 handler來創建線程。
如何在線程中間傳輸數據?
可以通過共享數據和線程變量。
解釋一下yield, wait, notify, notifyAll, sleep
yield是把線程從運行狀態,變為可運行狀態。
wait是要求線程解鎖并放棄運行狀態,進入等待隊列。
notify是用來從等待隊列里面喚醒一個線程。
notifyAll是用來從等待隊列里面喚醒所有線程。
sleep是暫停線程的執行。當前線程被喚醒后會進入可運行狀態。
解釋線程的生命狀態。
線程的生命狀態,新創建,可運行,正在運行,不可運行,終止。
如何實現線程的同步?線程同步有什么缺點?
通常使用synchronized 關鍵字來實現。缺點是降低了程序的執行效率。
Volatile是干什么用的?
這個關鍵字是用來在主內存上定義一個變量。而不是在線程的內存上。主要用來做數據的共享。
[序列化是怎么回事]
序列化是指把一個對象寫入文件當中。反序列化是指從文件返回一個對象。
如何來做序列化和反序列化?
可以使用objectoutputstream寫入和讀取。
好了,這個問題先說這些,歡迎關注丁哥開講,我們下次再見。
感謝邀請!
作為IT行業的一名Java開發人員,我可以給你一些建議。
實習生一般都是面試Java基礎崗,面試的問題一般都會隨著公司的大小有較大的區別。
一般大型公司。像BAT那樣的公司大部分都會很重視源碼這一方面。像一些集合的原理、鎖的底層原理都會重點去詢問,其次的話框架方面也會側重于底層原理的運行。這方面網上會有很多 相關的面試題,你可以搜索完后做做。
中小型公司因為公司業務的需要,很多都會側重于應用,比如sopringmvc框架的使用、集合的使用、map與list的區別等問題。很多的時候都會要求實習生介紹一下自己的項目,以及項目是如何去做的。數據庫的使用、jdbc等相關項目開發中用到的基礎都會去詢問。
推薦一個App“”牛客網“”,里面有很多練習題,可以模擬面試,應該能滿足你的需求。
希望回答對您有所幫助。
我本人從事多年互聯網Java開發,感興趣的朋友可以關注私聊,共同努力,共同進步。
謝謝!
實習生面試java開發崗位,一般會問什么問題呢,下面是我整理的一些比較常見的面試題,希望能夠幫到小伙伴!
計算機網絡
1.TCP對應的協議和UDP對應的協議
TCP對應的協議:
UDP對應的協議:
2.簡述IP地址的分類?
IP地址分為網絡號和主機號, A類地址的前8位是網絡地址,B類地址的前16位是網絡地址,C 類地址的前24位是網絡地址。
A類地址: 1.0.0.0~126.0.0.0
B類地址:128.0.0.0 ~ 191.255.255.255
C類地址:192.0.0.0 ~ 223.255.255.255
D類地址:224.0.0.0 ~ 239.255.255.255 (作為多播使用)
E類地址:保留
A,B,C是基本類,D、E類作為多播和保留使用。主機號,全0的是網絡號,主機號全1的是廣播 地址。
3.HTTP協議包括哪些請求?
GET:對服務器資源的簡單請求
POST:用于發送包含用戶提交數據的請求
HEAD:類似于GET請求,不過返回的響應中沒有具體內容,用于獲取報頭
PUT:傳說中請求文檔的一個版本
DELETE:發出一個刪除指定文檔的請求
TRACE:發送一個請求副本,以跟蹤其處理進程
OPTIONS:返回所有可用的方法,檢查服務器支持哪些方法
CONNECT:用于ssl隧道的基于代理的請求
4.HTTP 原理
HTTP 是一個無狀態的協議。無狀態是指客戶機(Web 瀏覽器)和服務器之間不需要建立持久的連接,這意味著當一個客戶端向服務器端發出請求,然后服務器返回響應(response),連接就被關閉了,在服務器端不保留連接的有關信息.HTTP 遵循請求(Request)/應答(Response)模型。客戶機(瀏覽器)向服務器發送請求,服務器處理請求并返回適當的應答。所有 HTTP 連接都被構造成一套請求和應答。
5.HTTPS
HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP 通道,簡單講是 HTTP 的安全版。即 HTTP 下加入 SSL 層,HTTPS 的安全基礎是 SSL。其所用的端口號是 443。
java基礎
1.Java語言有哪些特點
封裝、繼承、多態、抽象。
2.什么是Java注釋
定義:用于解釋說明程序的文字
Java注釋的分類
單行注釋 格式:
Java注釋的作用
在程序中,尤其是復雜的程序中,適當地加入注釋可以增加程序的可讀性,有利于程序的修 改、調試和交流。注釋的內容在程序編譯的時候會被忽視,不會產生目標代碼,注釋的部分不 會對程序的執行結果產生任何影響。
注意事項:多行和文檔注釋都不能嵌套使用。
3.Java有哪些數據類型
定義:Java語言是強類型語言,對于每一種數據都定義了明確的具體的數據類型,在內存中分 配了不同大小的內存空間。
基本數據類型
引用數據類型
4.Java中實現多態的機制是什么?
Java中的多態靠的是父類或接口定義的引用變量可以指向子類或具體實現類的實例對象,而程 序調用的方法在運行期才動態綁定,就是引用變量所指向的具體實例對象的方法,也就是內存 里正在運行的那個對象的方法,而不是引用變量的類型中定義的方法。
5.String類的常用方法有哪些?
數據庫
1.數據庫事務
事務(TRANSACTION)是作為單個邏輯工作單元執行的一系列操作,這些操作作為一個整體一起向系統提交,要么都執行、要么都不執行 。事務是一個不可分割的工作邏輯單元。
2.存儲過程(特定功能的 SQL 語句集)
一組為了完成特定功能的 SQL 語句集,存儲在數據庫中,經過第一次編譯后再次調用不需要再次編譯,用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象。
3.基于 Redis 分布式鎖
4.MySQL 數據庫服務器性能分析的方法命令有哪些?
Show status 一些值得監控的變量值: Bytesreceived 和 Bytessent 和服務器之間來往的流量。 Com 服務器正在執行的命令。 Created 在查詢執行期限間創建的臨時表和文件。 Handler 存儲引擎操作。 Select 不同類型的聯接執行計劃。 Sort_* 幾種排序信息。
Show session status like ‘Select’; Show profiles SET profiling=1; Show profilesG Show profile;
5.Redis 實現原理或機制
Redis 是一個 key-value 存儲系統。和 Memcached 類似,但是解決了斷電后數據完全丟失的情況,而且她支持更多無化的 value 類型,除了和 string 外,還支持lists(鏈表)、sets(集合)和 zsets(有序集合)幾種數據類型。這些數據類型都支持 push/pop、add/remove 及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。
Redis 是一種基于客戶端 – 服務端模型以及請求 / 響應協議的 TCP 服務。這意味著通常情況下一個請求會遵循以下步驟:
客戶端向服務端發送一個查詢請求,并監聽 Socket 返回,通常是以阻塞模式,等待服務端響應。服務端處理命令,并將結果返回給客戶端。
在服務端未響應時,客戶端可以繼續向服務端發送請求,并最終一次性讀取所有服務端的響應。
Redis 管道技術最顯著的優勢是提高了 Redis 服務的性能。
分區是分割數據到多個 Redis 實例的處理過程,因此每個實例只保存 key 的一個子集。
通過利用多臺計算機內存的和值,允許我們構造更大的數據庫。
通過多核和多臺計算機,允許我們擴展計算能力;通過多臺計算機和網絡適配器,允許我們擴展網絡帶寬。
Redis 的一些特性在分區方面表現的不是很好:
涉及多個 key 的操作通常是不被支持的。舉例來說,當兩個 set 映射到不同的Redis 實例上時,你就不能對這兩個 set 執行交集操作。
涉及多個 key 的 Redis 事務不能使用。
當使用分區時,數據處理較為復雜,比如你需要處理多個 rdb/aof 文件,并且從多個實例和主機備份持久化文件。
增加或刪除容量也比較復雜。Redis 集群大多數支持在運行時增加、刪除節點的透明數據平衡的能力,但是類似于客戶端分區、代理等其他系統則不支持這項特性。然而,一種叫做 presharding 的技術對此是有幫助的。
以上是我整理的關于java面試的一些問題,可能不全,希望小伙伴根據自己所學習的基本情況加以彌補。
java開發技術學習教程及學習路線
http://www.atguigu.com/download.shtml
H5全棧前端開發技術學習教程及學習路線
http://www.atguigu.com/html5_video.shtml
大數據開發技術學習教程及學習路線
http://www.atguigu.com/bigdata_video.shtml
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答