2018Java開發面經(持續更新)

不要給本身挖坑!!!不要給本身挖坑!!!不要給本身挖坑!!!若是面試官只是問你瞭解xxx嗎,若是不是很瞭解,就直接說不知道,不要說知道,否則面試官深問再不知道就印象很很差!html

處女面送給了頭條(北京)平常實習(一面掛,視頻面,持續時間一個小時,2018.3.28):前端

1.項目問題---針對在線考試系統
  1)數據表結構,表之間的關係,包括有幾個表,每一個表裏麪包含的字段,表之間是怎麼關聯的。
  2)擴展需求(個人設計裏面學生每場考試只能考一次):學生反覆考同一份考試,怎麼查看每場考試的具體狀況?
    解決辦法:能夠新建一個考試狀況表,存儲相關信息。而後根據考試狀況表的id,來區分每場考試狀況。即前臺點擊的時候,能夠hidden當前的考試狀況id,而後後臺就能夠區分了。
  3)計算和傳文件時間較長,怎麼處理?
2.項目問題---針對商城
  1)怎麼發展成集羣?集羣是什麼意思?
  2)訂單號怎麼生成?
  3)怎麼實現定時關單?
  4)爲何要作購物車商城
  5)get和post分別在什麼狀況下使用?
3.基礎
  1) mysql索引,兩個關鍵字的索引,若是隻查其中一個,是否用到索引?
  2)hashmap的時間複雜度是多少,解決衝突的辦法有哪些?
    解答:時間複雜度是o(1),但要具體分析一下,由於裏面還有鏈表的複雜度存在。
4.手撕算法
  1)傳入是hashmap,嵌套多個key,怎麼去除嵌套的key,還原數據。即相似{url:{url:{url:127.0.0.1}}}的數據,將最裏面的數據還原。
  2)有序數組,怎麼肯定某一個數有多少個。(感受想考二分查找,時間複雜度要小於o(n))
字節跳動(武漢)暑期實習(兩面技術一面HR,現場面,給了口頭offer拒了。持續時間技術面平均一個小時,hr十分鐘,2018.6.15)
openday作了筆試題,10個單選題,兩個算法題,一個設計題。
單選題內容:
1)多線程訪問狀況下,變量是否加鎖問題。代碼以下:這裏須要加鎖的是a和b。由於k是每一個線程獨有的,而a和b是共享的。
1 int a = 10;
2 public int fun() {
3     static int b = 10;
4     int k = 1;
5 }
View Code

2)操做系統LRU的計算題。java

3)TCP和UDP的區別。mysql

4)網絡子網的計算,即有多少個子網,每一個子網多少個主機。linux

5)16進製表示的兩個有符號數相加,0x7FFF FFFF FFFF FFFE + 0x1000 0000 0000 0000,結果是-2。c++

6)堆排序的時間複雜度是o(nlgn),建堆的時間複雜度是o(n),調整堆的時間複雜度是o(lgn)。面試

7)排列組合問題,20分鐘內一輛車通過的機率是75%,則10分鐘內一輛車通過的機率是多少。redis

  設10分鐘內一輛車通過的機率是p,則有(1-p)(1-p)+0.75=1,解得p=0.5。算法

8)彙編高低位怎麼放置的問題。spring

算法題:

1.尋找數組中的峯值(比左右兩個值大)。直觀解法是o(n),遍歷一遍找到就返回;優化解法是o(lgn),二分查找,一旦找到就返回,不然左右誰大往哪邊找。

2.leetcode42題

設計題:

設計微博時間線系統,關注的人發微博後怎麼實時更新到粉絲首頁,儘可能少的延時,下滑時翻頁是怎麼作到的。要求,模塊設計,模塊之間的協調通訊。

解決:仿照微信(寫擴散)。寫擴散的應用:粉絲和發微博不是不少的狀況。每次關注的人發微博的時候要向粉絲寫入數據。因此當數據量太大的時候有可能承載不了,可是微信朋友圈是能夠的。讀擴散的應用?

考察:設計題沒有標準答案,要注意針對不一樣的實際業務量有不一樣的分析和解決方案。

一面(五十分鐘)

1.針對筆試題,一一追問解決辦法。

2.TCP和UDP的區別:TCP可靠、具備擁塞控制,可是有延時、消耗資源;UDP不可靠,適用於視頻通話等。

3.畫出項目的總體框架圖,是架構式的,系統瓶頸在哪裏(圖片服務無法更新、tomcat沒作異步)。

二面(一個小時,TCP和UDP的問題問的很深刻,起碼問了有半個小時)

1.域名解析過程,IP由DNS服務器解析出來,DNS用UDP協議,HTTP的PORT默認是80,用到了TCP創建三次握手鍊接,數據鏈路層查找MAC地址用的ARP協議(但這個協議實際是網絡層的)。

1.TCP和UDP深刻追問,TCP是針對字節流的,UDP是針對報文的,他們的本質區別是什麼?即字節流和報文在發送和接收數據方面有什麼不同的地方?TCP因爲有窗口大小的限制,因此發送端發送過來的數據若是過大,不能一次性所有接收,而應該循環接收,直至所有接收;而UDP則沒有這種限制,發送端發多少,接收端就能夠收多少。

2.Socket編程中,發送端send兩次10B的數據,接收端receive一次數據,能夠接收的數據範圍是多少?1B~20B。

3.MySQL索引有哪些?左前綴索引是什麼樣的概念?在什麼樣的狀況下索引會失效?

4.MySQL的引擎有哪些?有什麼區別?

5.redis的數據類型有哪些?各適用於什麼場景?

6.Java裏面的map都有哪些子集合?各有什麼區別?HashMap(容許null值,非線程安全,時間複雜度是o(1)),HashTable(不容許null值,線程安全),TreeMap(有序,時間複雜度是o(lgn))。。。

8.HashMap的key是自定義的類時,爲了保證key的惟一性,應該重寫該類的hashCode和equals。

7.加密存儲是用什麼加密的?MD5是不可逆加密,可不能夠用密鑰加密?爲何不採用密鑰加密,這種可逆加密與不可逆加密有什麼區別,各有什麼好處?

8.本身挖坑了。。。加密算法瞭解一些嗎?對稱加密和非對稱加密。。。

9.單點登陸系統的實現思路。單點登陸主要解決什麼樣的問題?cookie不能跨域問題。你的系統中解決了什麼樣的跨域問題?www.mall.com和www.baidu.com這種跨域問題怎麼解決?

10.寫sql語句,uid,date,count分別表示學號,進圖書館的日期,進圖書館的次數,查出每一個學生四月份進圖書館的總次數。select uid,sum(count) from t where 4月份 group by uid。

11.Java中的堆區和棧區有什麼區別?

字節跳動(武漢)秋招(一面技術,電話面,一戰和二戰面頭條都特別想進去,第三次的時候已經不太想進去了)

一面(2018.9.12)

1.手寫棧,要求是:可適用於全部場景。

2.http有什麼優勢和缺點。

3.301和302狀態碼有什麼區別。

4.積分兌換商品實際的sql操做是什麼樣的?說出關鍵的點。

數據不一致如何預防和處理。

5.取棧中的最大值,要求時間複雜度是o(1)。

6.怎麼理解面向對象?多態是怎麼實現的?private方法子類可不能夠訪問到?

18年三戰頭條的一些感覺:

不知不覺本身居然已經經歷了四次頭條的技術面,每次感受其實都很好,每一個面試官不管從態度仍是技術上都是質量很高的。態度上的話,即便你問題回答不上來,他也不會對你表現出來瞧不起的態度,也不會所以不想再繼續面你,而是換一個方向的問題繼續問,也就是在某一個點上你不會以後,他會找其餘的點來發現你的潛力,也就是說其實面試官在不斷的找你可能擅長的點,對你產生一些興趣,並且無論水平怎麼樣,時間通常都會控制在一個小時左右。技術上的話,每一個面試官無論技術深度仍是技術廣度感受都挺過關的,每個他發問的點,都能問的比較細,有的人說是問的偏,其實我倒以爲不至於,只是他們所站的角度不同,因此也許一樣的問題,他們想知道的咱們的掌握的點不同。因此雖然最後無論怎麼樣本身可能都去不了也不會選擇頭條,可是頭條的總體面試體驗仍是很是好的,並且也能看出來頭條的總體的技術水平。其實當你跟一個公司的多個面試官聊過以後,你真的能感覺出來這個公司的總體的技術功底的,由於有的面試官問出來的問題真的很淺甚至有的標準答案連他本身都不知道,其實你是能感受出來的。因此崇尚高工資,不介意加班的話,其實頭條目前來講仍是很值得去的,畢竟也還處於快速發展期。

 
京東(北京)暑期實習(兩面技術一面Hr,電話面,因爲懼怕對秋招由影響,hr還沒開始我就拒掉了)

一面(2018.4.13)

1.技術方面介紹一下項目。
2.用到了redis的哪些數據結構。
2.集羣是什麼,怎麼發展成集羣的形式?
3.ngnix的conf怎麼配置成集羣?
4.散列表解決衝突的方式有幾種?各有什麼優劣,哪一種最好?
5.介紹一下kmp算法。

二面(2018.4.17)

1.每一個組成的做用和所處的角色,包括JDK,JRE和JVM的區別

2.在什麼場景下會用到哪些集合類?

  答案:HashMap,ArrayList,HashSet等。

3.每一個集合類的特性。

  答案:hashmap能夠存session,hashset不容許重複值,arraylist獲取列表。hashset數據是否有序。基於set的有序存儲應該用什麼實現,treeset。

4.重寫和重載的區別以及何時使用。子類怎麼調用父類的方法。

5.線程和進程之間的區別以及各自的優缺點以及各自的使用場景。

6.線程的狀態及轉換關係。

7.快排和冒泡的流程。

8.JVM的GC、分代回收等。

9.堆和棧存儲的是什麼?基本數據類型和字符串存在哪裏?方法定義存在哪裏?

  答案:堆:對象。棧:引用。

10.http請求的流程

  答案:查找本地緩存ip->DNS解析等。

11.

 

京東內推簡歷石沉大海了,校招放棄了面試。

 

阿里內推sdn開發實習(一面掛,每次接到電話都是晚上,2018.4.23)

1.介紹源地址驗證項目。
2.用什麼進行驗證匹配,五元組?驗證規則有優先順序嗎?
3.另外一個項目主要負責了哪一部分。
3.用到了什麼數據庫,redis存session數據,數據過時怎麼辦?
4.spring怎麼加載數據?
5.依賴注入是怎麼回事?
6.用到了哪些註解,每一個註解的做用和原理。
 
 阿里校招直接沒有考慮
 
vivo秋招提早批(offer已拿,一面技術一面Hr,2018.6.5)
技術面 
1.數據庫有多少種範式?每種範式都解決了什麼問題?你的電商項目裏用到了哪一種範式?
2.linux有沒有編譯過c++程序,c++與java的區別是什麼?
3.md5是加密算法嗎,怎麼進行加密的?
4.設計模式有多少種?
5.抽象類和接口的本質區別,何時用抽象類(模板),何時用接口(更抽象)?
6.在高數據量的狀況,怎麼實現數據控制攔截?
7.怎麼肯定是正常數據包仍是僞造數據包?驗證方式是什麼?輪詢。
8.單點登陸跨域問題的解決。
9.ngnix作反向代理和靜態加載,location的配置。
10.國內主要的交換機廠商有哪些?
11.分佈式高併發,tomcat的設置使用相關。
12.http的狀態碼有哪些?各表明什麼含義?好比200,404,405,500,301,302等。
hr面
1.自我介紹
2.興趣愛好
3.對vivo的瞭解
4.家庭狀況
5.工做地點要求
6.面對加班狀況,女生相對於男生的優點在哪裏
反問問題:新人的培訓體系是什麼樣的。
 
 
騰訊秋招提早批(一面掛,2018.8.2)
1.介紹SDN項目。
2.若是僞造機和被僞造機連在一個交換機的一個端口上,怎麼解決?
3.傳統網絡中數據包在鏈路中傳輸,通過交換機和路由器時,IP和MAC(包括源和目的)會變嗎?
  都是外網的狀況下,IP不變,MAC會變;若是是有內網NAT的狀況下,IP變,MAC變。
4.IPv4協議的包頭都有哪些字段?長度和首部長度都包括IP包的哪些部分?數據鏈路層的MTU包括哪些?
5.咱們部門主要作C,職位不匹配,嗯。
 
ThoughtWorks(武漢)秋招提早批(offer已拿,一面技術+一面HR,2018.8.5)
技術面(四十分鐘,20分鐘coding,20分鐘技術面)
1.有二十分鐘的時間看代碼修改的需求題目,看完題目以後講思路,而後能夠開始動手寫了。(不要懼怕說話,多跟面試官交流,具體的需求是什麼,能夠先寫哪一個部分,能夠從易到難開始coding,這樣能夠減小內心的壓力和緊張度)
2.SDN項目
3.修改密碼的時候爲何要用token解決?在什麼狀況下會出現這種橫向越權問題?
4.單點登陸是什麼實現的?
HR面(四十分鐘,有一票否決權)
1.以爲技術面表現怎麼樣?
2.除了Java後臺有沒有學過其餘的技術?好比前端,腳本?
3.有沒有在不肯意學被逼着去學的技術?是怎麼學的?學的效果怎麼樣?
4.在團隊合做中有沒有意見不一致的狀況?你是怎麼解決的?當隊員提出意見反駁你的時候,你的態度是什麼?
5.你有沒有幫助過你的隊員?你是採起什麼樣的方式幫助的?你的隊員有什麼進步嗎?
6.在你目前的項目中有沒有什麼痛點是比較難解決的?你是怎麼解決這個問題的?
7.你有沒有對負責你的老師提過你本身的建議?
8.你最近有沒有學習什麼新技術?你是怎麼學習的?經過什麼途徑學習的?
9.指望工資是多少?最長能接受的出差時間?
10.英語怎麼樣?用一段英文簡單描述一下對此次面試的體驗。
反問問題:工做機制是什麼?是以部門劃分仍是以項目劃分?
 
猿輔導(北京)提早批(一面一個小時,2018.8.11)
1.SDN項目
2.GC算法都有哪些?
3.手撕代碼(40分鐘)
1)找出兩個公共鏈表的公共鏈表部分的長度,就是Y型鏈表的的公共部分長度。
2)m個文件,每一個文件中有n個數,對這全部的數進行排序,而後輸出存到最後的文件中,n的數值大到內存中只能存放最多2個文件的數。
解決:對每一個文件分別排序,而後再取每一個文件的第一個數,創建堆排,再每次輸出最小值而後從m個文件取一個數,調整堆,繼續依次排序輸出。
 
百度(北京)提早批(三面offer,2018.8.14)
一面
1.購物商城的項目,SDN項目。
2.C++的虛函數是什麼。
3.linux的經常使用目錄和基本命令。
4.測試方法瞭解哪些?黑盒測試都有哪些方法?等價類是什麼?
5.public,protected,default,private修飾範圍有什麼不一樣。
6.接口和抽象類的區別。
7.集合容器都有哪些,各自特色和應用場景。
8.多線程能夠用在什麼場景中?用了多線程的哪些方法?有沒有用過wait函數。
9.Y型鏈表和二叉樹中序遍歷。
10.drop,delete,truncate的區別。
二面
1.購物商城項目,爲何要用ftp做爲服務器,爲何要用ngnix,redis只作了session共享嗎?
2.SDN項目。
3.如何測試購物車?
三面
1.用過哪些百度的產品。
2.客觀評價一下一個好的搜索引擎須要哪些東西。
3.在一個訪問量很大,關鍵詞不少的狀況下,若是讓用戶的搜索速度足夠快,如何優化搜索過程。
緩存+數據庫優化
4.爲何要作測試?(三次面試都被問了)你是怎麼理解測試和開發的?
5.爲何要來北京?做爲女生怎麼看待加班文化?
6.可否來實習?(三次面試都被問了)
 
鬥魚(武漢)提早批(兩面技術面一面總監面一面HR,2018.9.13)
鬥魚這兩年感受hc很是很是少,因此校招雖然收的簡歷多,可是撈起來的很是少,因此我也算是幸運吧。
先去作了套筆試題,60分鐘,選擇題是數據結構,大題包括TCP三次握手和四次揮手,操做系統內存淘汰算法,數據庫的幾種範式,一個單鏈表找出其中位數,找出集合中最大的T=A+B的T是多少,堆排序的整個調整過程。
一面(三十分鐘,像剛入職沒多久的學生)
1.瞭解鬥魚嗎?
2.有過實習經驗嗎?這幾個項目都是在什麼場景下完成的?
3.在什麼狀況下會發生橫向越權問題?你是怎麼解決的?
4.Java中的類經常使用的有哪些?
5.在什麼場景下會用到LinkedHashMap?HashMap底層的實現結構是什麼樣的?HashMap在什麼樣的併發狀況下會出現什麼情況?會報什麼異常?
6.==和equals()有什麼區別?int和Integer有什麼關係?
7.TCP爲何是三次握手而不是兩次或四次?
8.http的斷點續傳瞭解過嗎?http的緩存是如何實現的?
9.你的擅長是在哪一塊?亮點在哪裏?
10.301和302狀態碼的區別。
11.ssm框架各有什麼優缺點?都是幹什麼用的?spring的做用是什麼?
二面(三十分鐘,這我的長得還挺帥的,可是說話真的很快,感受是那種作事效率超高超快節奏的人,因此我回答問題的時候說話也很快,誰讓他說話那麼快的hhh)
1.有過實習經驗嗎?
2.單點登陸是怎麼實現的?
3.前端要向後臺傳file文件,content-type應該怎麼設置。
4.http底層用什麼協議實現?二、三、四、5開頭的狀態碼分別都表明什麼意思?401和403的區別。
5.Mysql中都有哪幾種經常使用的類型?char和varchar有什麼區別?
6.SDN項目講一下。
7.你的職業規劃是什麼?有沒有興趣轉測開?
8.spring的優勢有哪些?
同等壓力狀況下選開發。
三面(三十分鐘,看樣子應該是作架構級別的)
1.有過實習經驗嗎?這兩個項目在你本身作的過程當中,有沒有想過架構層面的事情?
2.負載均衡你瞭解的都有什麼樣的實現方式?
3.若是你作的東西要投入商用,須要考慮哪些安全層面的事情?
4.你的職業規劃是什麼樣的?
HR面(三十分鐘)
1.瞭解鬥魚嗎?對鬥魚是什麼樣的印象?
2.從項目中學到了什麼?
3.最有挫敗感的事情是哪一件?
4.有沒有跟老師發生過沖突?怎麼解決的?
這裏本身太實誠了,居然說本身讓老師下不來臺了,真是尷尬,而後給我拋了一個職場問題。
5.主管是你的直接上級,當天你已經有了主管給你的任務,須要當天完成,而後總監又給你下達了新的任務,也須要當天完成,優先級相同,而主管和總監之間有矛盾,總監給你下達任務的時候沒有經過主管,你會怎麼解決這個問題?
正確的辦法應該是先告訴主管總監的任務,而後再去和總監溝通。
6.指望薪資。爲何堅持留在武漢?若是鬥魚給你比較滿意的offer,別的公司開出什麼條件你纔會去別的公司?
感受這裏是能夠跟hr談薪資的,她應該是想知道什麼樣的條件才能讓我選他們公司吧,但是我太實誠了,啥都沒說,嗯。
 
校招還拿了科大訊飛武漢、華爲、中科曙光的offer。因此下面也是零散的一點面經,不知道是哪一個公司的了。
1.枚舉類裏的屬性是否==
2.數據庫的隔離級別
3.索引底層用的什麼數據結構,爲何索引會快 。
4.數據庫的表和bean之間是怎麼映射的。 
5.mybatis中#和$有什麼區別,sql怎麼返回自增主鍵的值。
6.死鎖和死循環的關係 
7.怎麼理解時序圖的做用。  
8.不用ngnix,多個tomcat搭建還能生效嗎?
9.cookie禁用後session還能使用嗎? 
 
經歷了兩次秋招的我的的一些感想:
爲何是兩次呢,哈哈哈,由於去年還陪男票經歷了一次。我的以爲秋招仍是要趁早準備吧,若是是今年九月份要秋招,在去年九月份的時候就能夠開始慢慢刷題,平均天天一兩道,不是很花時間也保持了本身作題的新鮮度。而後在上半年的時候就能夠開始對本身刷的題,本身的項目,本身的基礎知識進行系統性的梳理。這樣在七月份開始校招提早批的時候也不至於太慌亂,鎮定自若打穩仗才比較重要。還有一個很重要的點就是,不要讓本身進入到這樣的境況中,就是面臨的是公司選你,而不是你選公司了,我以爲不管作什麼事情,主導權握在本身手裏是最好的,由於這個決定了你是否 在選擇在作在完成你想要的生活,若是被公司挑來挑去我以爲是挺難受的。
關於選擇:都是成年人了,我以爲咱們應該 爲咱們作出的每個選擇負責和承擔這個選擇所致使的結果,最好的辦法是,在作選擇以前,評估每一個選擇所帶來的效果,以及可能形成的風險,在各樣的利弊面前,咱們才能作出目前狀態下比較合理的選擇。因爲我的的目標性比較強烈,在七月份開始提早批的時候,我就 已經打算了放棄一線城市一線互聯網的選擇,這是須要勇氣的,也是須要很深的思考的,(因此我基本上沒投什麼外地公司,投了的也基本上都只是水了一水,因此武漢這邊的選擇也會更少一些,若是問我當聽到身邊的人拿高薪offer是什麼感覺,我只想說高薪offer很正常啊,每一個人的追求和想要的不同,我一直持守的觀念是不羨慕不嫉妒作好本身就行了~仍是剛開始說的,就是要對你作出的每一個選擇負責吧~)由於畢竟作技術的仍是會但願能在比較好的地方獲得鍛鍊,可是我在慢慢經歷着一些事情的時候,開始發現,若是爲了一份工做,須要捨棄你不少其餘的追求和念想,我以爲是不值得的。(固然每一個人所面臨的環境和選擇不同)特別是每當我步入醫院的大門時,就愈來愈以爲生命對咱們來講多麼多麼重要。人生短短七八十年,必定要想好本身想要的是什麼。
相關文章
相關標籤/搜索