1. 程式人生 > >記西安葡萄城面試(開發崗)

記西安葡萄城面試(開發崗)

    也不知道為什麼,每次去面試都會下雨,淅淅瀝瀝的那種!

    可能學校位置偏遠,進個城都得一個多小時,訊息閉塞,以前沒怎麼聽過葡萄城,以為是我戶太八號爭氣,擴大經營都搞到一個城的規模了,嘻嘻。。。秋招的時候才聽同學說過葡萄城這個公司工資給的不錯,加班很少,而且辦公環境美的一批。我去網上查的時候人家都面完一輪了,我就抱著試試的心態網上投了下簡歷,沒想到收到了面試的電話邀約,第二天就去了。

    公司很像一個小別墅,環境確實不錯,乾淨,整潔。來面試的人挺多的,我們被安排在一個一樓有落地窗的會議室,落地窗外面就是一個乾淨透明的小池子,雨落在池子裡,池子裡的錦鯉和幾條金魚悠閒的游來游去,感覺挺舒服的。但是因為參加面試的人太多,等了有一個多小時,在這一個小時裡才知道要進行四面,三面技術面,一面HR面,每一面都要撕程式碼,撕出來繼續面,撕不出來走人,有人等,有人走,覺得挺刺激的。

   等了好久,終於被叫到,然後被帶去三樓一個落地窗前的桌子上進行一面了,去三樓的路上工作人員問緊張不,我說有點,她一直在表達讓我等這麼久的歉意,安慰我沒事,放輕鬆。因為在三樓,坐下來才發現外面撐傘的行人和車水馬龍都能看得清清楚楚,環境確實舒服。面試官挺和氣,先讓來個自我介紹。問我專案上的一些東西,談了大概十幾分鍾。他說你是搞演算法的,怎麼想來開發?我說我覺得深度學習這個東西有時候很玄,很難落地,而且西安高深度學習的都是小公司,有規模的就是華為了,華為太累,我想進一家人性化的公司,聽說葡萄城特別好,錢多活少還離家近,面試官被我撲哧一聲逗笑了說,這個問題先放下吧,咱們來寫程式碼吧!請聽題:

        題目1.現在給你一個無序的陣列,你對它進行排序,要求前半部分是奇數,後半部分是偶數,而且奇數是降序,偶數是升序。

     我聽了題目,感覺不難,但是沒有一個很漂亮的辦法,我就說先用一個最笨的辦法吧,把奇數先拿出來放在一個數組裡,對他進行降序排序,再把偶數拿出來放進另一個數組,對它進行升序排序。最後把倆個數組的元素再依次放進一個數組裡面。接下來用Java擼出來了,面試官看了說,你這是可以,但是有沒有什麼更好的辦法。我想了想說可以設定倆個指標,left++在左邊找奇數,right--在右邊找偶數,找著瞭然後就換。換完後,找到奇偶的分界點再進行排序。面試官看了說,確實比剛才那個強了點,但是你找到奇數和偶數為什麼不分別開闢個空間用插入排序呢,我真想拍一下大腿,對哦,插入排序不就是把一個元素插入到有序的數組裡面嗎?這個題做完然後聊了下公司現在主要做的業務,差不多就結束了,然後等通知,就過了準備第二輪。

    第一輪面完過了的人,會讓你填寫一個表,包括一些基本資訊,教育經歷,個人愛好,期望薪資等等。填完後等了一會又被帶到二樓進行二面,二面是倆個面試官,一個年輕一點,一個稍微年齡大點。上來還是先簡單的自我介紹,介紹完開始就直接開問一些基本的東西,比如說說你知道的資料結構,然後每種資料結構都有什麼特點?順序儲存和鏈式儲存有什麼區別?Java的ArrayList擴容機制是什麼樣的?Hashmap底層的實現原理是什麼?Java裡面new一個物件,記憶體是怎麼分配的?說說Java的JVM機制等等。其他的都一一回答出來了,最後一個Java的JVM沒有深入瞭解過,所以沒敢胡說,就說這方面瞭解的比較少,面試官也沒說什麼。然後又開始擼程式碼,請聽題:

     題目2:給你一個數組,請你找出這個陣列中最大連續元素的和的最大值。

     剛開始沒理解題,以為還要把這個連續元素的陣列也找出來,在那一直用DFS做,寫了半天。面試官說,你別想的太複雜,只讓你找到這個最大值。我想了想,那這難度就小了,那我直接遍歷陣列,設定倆個變數,一個用來加和,一個用來判斷,如果後面來的數,大於當前我這個最大值,最大值就是新的數,如果小於就不變. 思路清晰了,然後就寫出來了。

   寫完後,面試官說,來再給你出個題,一個桌子上有N個人,每個人手裡都有一個數字,然後從第一個人開始,亮出手裡的數字,順時針走這個數字的步數,然後走到哪個人,這個人就out,然後繼續順時針走剛才out那個人裡面的步數,就像丟手絹一樣,直到out到只剩下最後一個人,返回這個人,遊戲結束。你用程式實現以下吧!

    聽完有一點點懵逼,然後分析一下,覺得還是可以寫的。把每個人的數字按順序存在陣列中,陣列下標代表這個人的id,陣列元素代表這個人手裡的數字。再宣告一個同樣長度的boolean陣列,全部初始成true。true代表這個人還沒有out,false代表這個人已經out。然後設定倆個while迴圈,外面迴圈的條件是true的個數不等於1.裡面的while迴圈主要是為了看,走到的這個人是不是已經out,這個人如果已經out就在繼續走。 直到boolean陣列ture的個數等於1,迴圈結束,找出那個ture的下標。然後用Java擼了一遍,面試官看完後指出了一點小問題,然後點點頭說可以。但是你有沒有更好的資料結構來實現,不要用陣列,我說map也可以,但是跟陣列意思差不多。面試官提醒一下說,你可以試著想想迴圈連結串列。我想了一下,然後按照題目的意思,把迴圈連結串列畫出來,才發現確實迴圈連結串列更簡單,while結束的條件就是迴圈連結串列的長度等於1,而且out的時候只要修改一下指標,刪除節點就可以了。這個題寫完,然後年齡大點的面試官問我還有什麼問題,我問了下在公司工作5年以上員工的比例,他們說接近一半,然後差不多就結束了。

     在外面等了一會,通知說二面過了,但是今天已經快7點了,時間不早了,下週一再過來繼續面,還有一輪技術面和HR面。我從三點來,面試加上等待就弄到快7點了,是在餓的不行了,打個車就回家吃飯了。下週面完有空再寫吧!!!!