筆試面經:一次意料之外的面試

因爲理念不合,所以七月初便交了辭職報告.然後本以爲還要一個月的時候正式離職或者招到人後正常辦理交接後離職.卻不料計劃不如變化快,於某一天老闆說java項目暫緩.直接的表現就是沒有交接者,我可以直接離職。所以就這麼突然的辭職了.
辭職後本打算在家休息幾天再開始找工作。所以只是在boss上把簡歷打開,狀態改爲求職。但是並沒有主動去各個崗位毛遂自薦。在離職的第一天睡到自然醒,又買了愛吃的菜在家磨練廚藝。然後重點來了!!第二天一早,發現boss上有主動搭訕並邀約面試的。好吧,雖說沒有準備,但是也沒必要錯過這個機會,所以直接約在了下午兩點。現在寫這個文章是面試完畢回家後決定把面試的經歷整理整理,在此做個記錄,也算是給新人一個建議。



然後在下午兩點屁顛屁顛跑到公司中間太陽雨什麼的就不說了。反正是到了公司(因爲之前boss上就看了公司規模不大,20人以下的)很意外的有個前臺小美女。我說我是去面java開發,就拿出一打紙給我說是一個簡單的筆試。把我引到一個會客廳,並且倒了一杯溫水(說實話大熱天的一杯溫水,很細心的小美女啊~~長得也可愛,哈哈)。接着說面試題吧,怎麼說呢。一共十二道題,最後兩道是口述經歷的.所以正經的筆試題10道.我先根據記憶說一遍。

第一道題:
  • private,protected,public和默認的作用和區別。
    這個確實是基礎到不能再基礎的,你可以說我愛現也可以說我想得多.我答題的時候考慮了兩點,一個是修飾方法,還有一個是修飾類。因爲修飾方法除了權限,還點出了一點,private可以被子類繼承但是子類無權訪問(使用反射可以看出子類是繼承了父類的私有方法的,不管是否是final,只是直接調用父類的私有方法是不可以的,字段同理)其實我覺得如果我當時不提到這個也不能算錯,提到了多少應該算是加分項吧?畢竟感覺最後面試的時候經理對我的筆試還算滿意啊。還有提到了如果修飾類的話,不考慮內部類的情況,一個.java文件中只能有一個public的類。(我個人態度能往上靠的知識都可以提一下,前提是確保是對的)
第二道題:
  • 對java中的多態的理解
    首先感謝我qq羣友,上午知道要面試之前問大家面經了,一個羣友發了一個阿里面經(我就不打馬賽克了,有意見的私聊我啊~順便打下廣告,羣招人):



    然後重點就來了!!!打開這個阿里面經:



    只能說運氣好到爆,第一個問題就是多臺的理解.然後我其實這個只看了前幾道題,反正這次算是壓中題了,抑制不住的想笑~~然後這個題就是這麼回答的。其實哪怕不看這個,對多態也是理解的,但是覺得自己的原話可能沒有這個總結的到位和準確。
第三道題:
  • 對static的理解。static域中可以調用非靜態變量或者方法麼?被static或者private修飾的方法可以被覆蓋麼?
    這個題考的也是基礎,沒啥說的,我大概的回答(當時我也是憑感覺回答,可能有的用詞不準確或者不太正確,我現在這裏說的都是當時回答的):static修飾方法,則這個方法是靜態方法,修飾變量則這個變量是靜態變量。從歸屬上理解,靜態塊(靜態方法,靜態變量) 是屬於類的而不是實例對象的,所有對象共享一份。從類加載上講,在類被初始化的時候就會被執行,並且同時分配內存空間。以後的所有訪問都是訪問這個地址。所以從內存上講,靜態塊只佔一份內存,但是值是可以修改的.不過地址不會改。靜態塊可以被類直接調用.雖然也可以被對象調用,但其指向的是一個,而且如果在eclipse編譯下,對象調用靜態塊不會報錯但是會報警告。
    static域中不可以直接調用非靜態變量或者方法,但是可以new個對象再通過對象調用(我不知道我這裏是不是說的多餘了。但是我覺得直接回答 static域中不可以調用非靜態變量或者方法太絕對了.)
    被static或者private修飾的方法都不可以被覆蓋(我覺得沒啥好解釋的,所以筆記的時候只寫了不可以)
    這裏說點題外話,我有做筆記的習慣在以前的文章裏就說過了,面試回家以後我翻了翻筆記本,發現這道題我是記下來過的:


第四道題:
  • HashMap和HashTable的區別?ArrayList和Vector的區別?
    哎,只能說天道酬勤吧.我大概說了下HashTable是線程安全的,HashMap是非線程安全的.HashTable的key和value都不是能null,而HashMap的都可以.ArrayList是非線程安全的,Vector是線程安全的,但是因其內部加鎖所以效率低.



這個題我反正只回答了這麼多,然後覺得自己挺滿意,畢竟也都是做過的.然後這裏再介紹下牛客這個軟件就是刷題軟件,然後java一千多道題左右吧,我反正是閒着沒事就組一套題答.

第五道題:
  • 手寫冒泡排序(我有點回憶不起來了,這個手寫冒泡是第九題我記得,這裏想起來就先說了吧)
    說實話我在這裏小小的卡了一下,大家別笑.原理大概方法都知道,真寫的時候還是有點小問題的.一時間有點矇住了,但是最後費了一點時間反正是寫出來了.重點就是雙循環和兩個值追尾交換.這裏還有個問題,就是我爲了這個arr又new了個數組...反正是對付寫完了.
for(i = 0;i < arr.length;i++){
            for(j = 1;j <  arr.length - i;j++){
                if(a[j - 1] > a[j]){
                    int temp;
                    temp = a[j];
                    a[j] = a[ j- 1];
                    a[j - 1] = temp;}}}
第六道題:
  • tcp的三次握手,兩次行麼?爲什麼?
    我就呵呵了,這個題有點槽點啊,一天三頓飯,爲什麼三頓啊?一頓可以麼?不行不行,轉入正題,其實這個知識我在上次找工作,http原理的時候有涉及到,雖說記得不那麼清楚,但是大概的還是能敘述出來.下面是我的答案.
    三次握手是由其工作原理決定的(畢竟設計成三次肯定是有意義啊,我這句話就是憑感覺萬金油)
    首先在連接之前,客戶端要告訴服務端我要給你東西了(我當時就用的這種土話),第一次握手
    然後服務端收到了以後說那你發來吧 第二次握手
    最後tcp以一種方法把數據用很小很小的粒度一點一點的發過去,這樣做是防止數據丟失. 都發完了,第三次握手
    其實回來之後我又看了tcp三次握手的,我說的百分之60對吧,就是術語啥的有點問題.關鍵是好幾個月前啃得,現在還能編的差不多不錯了,我自己挺知足的。然後這裏我是說面試經驗 ,就不科普tcp原理啥的了.
    對了我還說了http底層就是tcp.然後把Http的實現記住的都墨跡了一遍~~反正話癆屬性,而且我覺得多秀一些知識沒問題啊.而且那麼大空白的紙,我就寫兩三行總覺得不太合適.然後附上我以前的筆記(字就這樣了,主要是內容):
第七道題:
  • osi七層模型都是什麼?
    哎,怎麼說呢,還是要感謝羣裏大佬(ps:我說的這麼多不都是一個羣啊),幾個月前找工作的時候向大佬請教的時候啃得知識.當時找工作沒用到,結果現在用到了~哈哈

然後這麼久了,肯定是記得沒那麼全,但是我記得當時查osi七層模型的時候就看過一些說法,所以又閒扯了幾句,下面是我的回答:
七層模型是一種很理想化的模型,包括物理層,訪問層(這個也是記混了,也是自己編的.哎,說一說記性這種東西真的不靠譜。我打包票當時是真的背的很熟練啊),應用層,傳輸層,網絡層,數據層(其實現在看這個是說錯了的,因爲原模型中的數據鏈路層.關鍵真的我上面的好多都是蒙的).(然後又發表了自己的看法,其實是當時看到的然後有一點點印象的東西),七層模型很理想化,目前並沒有完全符合七層模型的實例.而是每個協議對應七層模型中的幾層而已.比如剛剛說的tcp也可以用七層模型中的幾層模型來表示(當時看過,但是我真的忘了對應的咋表示了~所以就說到這就沒了)。

第八道題:
  • 我有點想不起來了,哎,反正就這麼說吧,這次筆試真的很基礎,反正沒有我沒聽過,沒接觸過的概念!然後這個第八題說一些自己的看法感悟吧.我上面的圖片可能看起來很雜亂,其實有的圖片我沒必要傳.但是這裏都一一展示了.從年前的錄音。到平時刷牛客的筆記,到上次面試的筆記.到上午羣友的友情提供阿里面經。
    我這個文章的題目是意料之外的面試,說實話除了上午瞄了幾眼阿里的面經,剩下的我並沒有爲這次面試做什麼準備的工作.所以這個面試真的是意料之外的,但是對筆試的成績我是比較滿意的,從結果來看我覺得公司也還算是滿意的.但是我覺得我其實還可以做的更好,如果昨天不是吃喝玩樂放鬆了一天呢?如果之前工作也隨時看一下java的基礎知識,給自己充電呢?
    確實都是很基礎的東西,但是你要想想這些問題問你,你會不會都能答上?說實話,我個人角度,如果上午沒有看阿里面經,對於多態可能我的答案就是一句:父類引用指向子類對象.而且有時候我們的答案不是錯的,但是卻是不準確的.比如我說的tcp,我覺得大體的流程我是理解的,但是我的答案肯定是不配拿滿分。也會想想如果我再用點心啃幾天知識會不會好一點,但是問題是機會不會給我幾天.就是想說一句話,大家都說缺少機會缺少機會,可是你確定機會來了你準備好了麼?
面試
  • 可能是我面試經驗比較少,也可能是公司缺人,我不太確定是哪種情況。但是面試的時候面試官是肯滿意的,起碼有誇獎了我知識儲備挺多.我不知道是客氣還是什麼 ,但是我是當真了的。然後接下來講一些面試的心得:
  1. 首先,逃不過的一個問題,爲什麼離職?因爲我個人經歷較少,然後我上個公司的情況比較複雜,所以我就直接說的因爲理念不合,面試官緊接着就問覺得他們公司怎麼樣?一來我今天面的是一家外包公司,二來也是我真實的想法,所以我就說我覺得我的性格適合外包公司,因爲環境簡單而且需求明確。尤其是不用考慮項目上線後的市場反饋(可能我想的比較簡單而且說的有偏頗,反正我真的是這麼想的).而自己的做產品的話需要考慮的多而且需求變更,公司可能達不到預計等等意外.尤其是創業中的公司變數太大.所以我個人找工作本來就傾向於外包,各司其職等等.反正意思就是對於公司情況我很滿意.
  2. 開始面試我問題了!!這裏是個重點,讓我講了一些情景處理和業務實現。一直到這裏問的都ok,然後的然後,我之前也寫了一直用的spring boot.我不知道是真的這麼巧還是面試官故意的,
  • 問我做過原生項目麼?excuse me?這個要get什麼技能?我說當時學習的時候做過原生demo.沒有實際項目經歷.然後面試官說嗯.
  • 那部署過項目麼?我說沒有(我真不知道現在當個開發還必須全棧麼?大佬們也可以留言告訴我情況~),但是在服務器上跑過項目.因爲上個項目沒有上線,所以沒做到最後,但是會簡單的操作linux服務器.知道一些常用的命令和腳本的編寫.面試官追問:也就是沒有自己部署上線經驗了?我說是的.
  • 面試官說他們公司用的都是spring,我用過麼?我說用過啊,springboot只不過spring進一步封裝而已.最開始都用的spring啊~只不過配置上比spring boot麻煩,但是是可以搭環境的(其實我現在還在吐槽爲什麼外包技術棧不是最新的~)
  • 前端技術都會什麼啊?我說簡單的html頁面編寫,jQuery會用.以前做過一些簡單的網頁.但是框架頁面渲染什麼都沒做過.
  • 重點要來了,面試官跟我說,我覺得你技術點比較單一啊,我臉上笑嘻嘻,心裏MMP.你要是想找個全棧我確實是知識點比較單一.然後當時確實是心裏有點覺得自己是不是會的太少了.
  1. 接下來我覺得進入到重中之重:問我期望薪資多少啊?我報了個價(說實話是在我事先預計的低了點的,因爲之前那一串的問答讓我有點受挫).剩下說了點工作上的福利待遇啥的就不多說了.然後談完後很客氣的就先走了.
    出了公司我情緒還有點低落,覺得是不是自己挺菜的,然後羣裏扯淡,和一個我覺得高山仰止的人聊了這個事,那個人說別多想,這個就是套路...總要用一串你很難答上的問題來壓壓你.我多多少少受到安慰了.然後走路,地鐵、公交~折騰到家五點多快六點的時候,收到了boss上的回信,說覺得我還不錯,因爲公司現在比較着急趕項目,本來應該跟老闆報告再決定招不招的,但是現在時間緊,如果願意可以下週一開始去實習,實習期怎麼樣怎麼樣的就比較大衆化了,沒啥好說的.然後我現在並沒回覆,一來雙向選擇,我覺得我還沒選呢.二來我是打算休息幾天再開始工作,三來,你可以說我幼稚,但是我第一次遇到這種可能是故意壓人的面試官,心裏不痛快啊!
總結

其實我面試經歷不太多,但是既然今天面了,而且有一些感悟,所以就總結一下,給比我新的正在找工作的人點建議吧.
首先打鐵還需自身硬.基礎還是要多啃啃的,用不到也別覺得可惜,你看我上次啃得沒用到但是這次用到了啊!會的多一點起碼不會是錯~我們不知道機會什麼時候會來!!!
二,如果面試中被人連環問你都不會,別跟我一樣急着否定自己.如果真的是你菜,那也已經菜了,不然別人故意的,你也沒辦法.可以適當 的堅持下自己的想法.我現在就好後悔之前報薪資的時候沒扛住然後往下報了.哎~
三,我個人的經驗,就是不管面試還是筆試,問到的是你知道,但是不是很瞭解的東西,你可以往你確定正確而且有點相關的技術上靠.就是把握說話的方向吧.筆試也是,我反正現在覺得我寫的答案比較多起碼不是減分項,因爲感覺面試官看我的答案的時候是挺滿意的.
暫時就這麼多吧以後我會盡量每一次面試都補充或者寫一下經過,問題,感悟和總結的~~
對了,再安利下,有個軟件 叫做牛客,裏面可以刷題,然後我挺經常用的,裏面有收費的內容不過我沒用過,單純用來學習java基礎知識的.如果覺得沒啥好學習途徑的萌新可以下載一個試試~~牛客

喏,手打不易,而且八點多快九點了我還在網吧敲得這篇文章所以別吝嗇動動小手分享轉發點贊評論啥的~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章