1. 程式人生 > >某公司人工智慧面試總結

某公司人工智慧面試總結

某公司人工智慧面試總結

2018年09月01日 20:31:11 zhoujl48 閱讀數:1821

本文用於記錄這幾天面試下來的一些流程和心得體會,重點記錄XXXX部門的三場面試,瞭解自己的優勢,更重要的是發現自己的不足,以便在日後針對性的加強學習和進步!

 

 


1 面試流程

  • 面試流程
輪數 面試型別 面試方式 面試時長(min)
1 技術面 視訊 30
2 技術面 視訊 60 - 70
3 HR面 電話 20 - 30

1.1 技術面(14:00 – 14:30, 15:30 – 16:40, 30/Aug.)

1.1.1 自我介紹

首先是一段自我介紹,自我介紹內容可以儘量簡潔,只涵蓋和自己及崗位相關的框架,便於面試官在我們陳述過程中抓取感興趣的內容,拓展開來提問;這個時候不需要慌張,可以隨時終止自我介紹,針對面試官的提問,詳細展開,分點描述。如果一開始就事無鉅細的把自己的各類愛好特長科研經歷的細節一一陳述,不僅浪費時間,更會喪失重點,更重要的是,會給面試官留下主次不分,沒有條理

的壞印象。

1.1.2 話題來源

從幾次的技術面試經歷來看,除了面試官準備好一定要問的問題之外,問題來源一般有三:

  • 自我介紹
  • 個人簡歷,重要性依次為:專案經歷 > 專業技能 > 專業課程
  • 在詳述某個內容或專案時,提及的面試官興趣的某個專案或技能

從某種意義上來說,準備好自我介紹認真雕琢簡歷(在此特別感謝一位學長給我簡歷上的指導!),以及對專案的瞭如指掌,就已經主導了這一場面試的大部分討論話題!

1.1.3 互動方式

兩次技術面試除了在時長上面有所差異,面試內容問題差異不大,但是根據技術面試官個人的喜好和性格,呈現出兩種不同的面試風格。其中:

  • 一面傾向於面試官提問 -- 我來回答的模式,面試官本人不會對我的回答進行詳細的評價,而是立即進行下一個問題的討論;
  • 二面傾向於面試官提問 -- 我來回答 -- 雙方討論的模式,雖然面試官在我回答之後同樣不會給出正確答案,但是會針對我的回答進行一定程度上的互動,例如:
    • 闡述該問題在專業領域的重要性
    • 解釋該問題涉及的相關技能
    • 對問題進行略微的改動,觀察我的遷移學習和反應能力

1.1.4 面試問題

由於當時沒有特意記錄,這裡全憑記憶整理一些印象深刻的問題。

a. 基礎部分

  • 介紹自己平常用到的Linux命令;
  • 介紹什麼是繼承和多型;
  • 介紹Numpy常用操作,如何對矩陣進行轉置;
  • 介紹Pandas常用操作,如何篩選資料;
  • 如何反轉輸出字串;
  • 什麼是列表推導式;

b. 資料部分

  • 是否對大量資料或者經典資料集進行過資料預處理(資料清洗/資料篩選等),如果有請詳述操作流程(因為沒有實際資料處理經驗,我只介紹了當初學習過程中如何對Boston房價和Wine資料進行清洗和預處理);
  • 介紹常用的SQL語言,如何顯示所有欄位,如何拼接表單(由於我對資料庫僅限於瞭解最基礎的操作,因此我只回答了我所知道的最基本的幾個資料庫語句,對最後一個拼接表單的問題,我直接說確實不會做。在這裡說一下,如果遇到自己不會的題目,是很正常的事,直截了當地說不會就行,然後最好可以說一說和它相關但是自己又相對熟悉的其他東西,面試官不會因為我們哪個知識點不熟悉不瞭解而全盤否定我們的——當然前提是不要問啥啥不會[笑哭]);
  • 用Scrapy框架爬過哪些網站,分別用過哪些技能,各個網站都有什麼各自的特點(詳細說一說各大網站的反爬蟲特點,以及自己的應對方法,有做過簡單專案的華也可以針對自己的專案進行述說);
  • 是否瞭解Python的非同步和多執行緒,用過哪些相關的庫(這裡我提到了自己做過的動態代理池專案,Github / 部落格筆記,詳述了整個專案的框架,然後通過其中一個非同步模組順帶就回答面試官的問題);
  • 用爬蟲獲取的資料有什麼用途,是否應用於機器學習(這一題我也是如實回答,沒有對爬蟲獲取的資料進行過實際的應用,因為當初是在學習爬蟲的各種技能,關於資料應用和挖掘這一塊我尚且沒有進行過實戰);

c. 機器學習 & 深度學習

  • 瞭解哪些經典機器學習方法,針對某一兩個進行詳述(我在實驗室專案中用到過SVM,因此詳細說了下SVM的原理,以及是如何調參的;二面也問到了這個問題,但是面試官又主動問了我決策樹/CART/GBDT的原理和特點,但是遺憾的是我對決策樹只瞭解最基本的決策樹和剪枝等對抗過擬合的方法,CART/GBDT兩個我直接說目前還沒有深入瞭解,同時我又描述了一下我相對比較瞭解的隨機森林,運用的Bagging和Adaboost,繼而在面試官的要求下,又詳細說了一下Bagging和Adaboost的原理和效果);
  • 用過Tensorflow框架搭建過哪些模型,簡述模型搭建的過程和步驟(我目前也沒有針對實際應用搭建過模型,就說了最經典的MNIST的全連線網路模型以及CNN模型,分別介紹了全連線和CNN模型的搭建過程)
  • 是否瞭解CNN和RNN,簡述其特點,以及為什麼要用這兩種網路(我對於RNN目前還不是特別瞭解,因此針對CNN進行了詳述,包括卷積層 / 池化層的作用和優勢,stride的選取,引數數量的改變);
  • 介紹Dropout的作用和意義;
  • 什麼是過擬合和欠擬合,過擬合的應對措施有哪些(應對措施我主要說了三個:增大訓練資料集的規模 / 訓練提前停止 / L1和L2正則化;這之後面試官又讓我說一說L1和L2正則化為什麼能起作用,以及他們各自的特點,我說到了網上一篇文章用二位座標軸來解釋的,面試官笑著說他也看過這篇文章,然後互相心有靈犀我也就沒有繼續解釋下去);
  • 是否不用深度學習框架編寫過網路模型(我介紹了一下當初跟著吳恩達老師的視訊課程,用純Python搭建過識別貓的圖片的後向傳播神經網路,並簡要介紹了一下模型的架構和作用);

d. 資料結構與演算法

  • 詳述快速排序的原理和過程;
  • 利用快速排序找到資料中第K大的項(這題我一時半會沒有回答出來,不過和麵試官交流了我的思考過程,面試官也會和我進行一定的討論,從而判斷我的邏輯是否清晰);

e. 邏輯思維

  • 有一個村子裡有n個人,其中一人是明星,另外(n-1)個人是普通人。其中,明星不認識除了自己之外的任何人,卻被所有普通人認識;而普通人之間有可能認識或不認識。為了找出這個村子裡的明星,我們可以向上帝提問:A是否認識B,上帝會給我們正確的答案——這個操作需要O(1)的時間成本。請給出耗時儘可能少的方案。
  • 上一題的變體:
    • 有兩個明星,明星之間互相認識;
    • 有兩個明星,明星之間互相不認識;
    • 有兩個明星,其中A認識B,但B不認識A;
    • 有(n-1)個明星;
    • 。。。
  • 這道題目和它的變體很多甚至不存在正確答案,面試官需要我們一邊思考一邊展示我們的思考過程,也就是解決實際問題的一個思路。

1.2 HR面(16:30 – 17:00, 31/Aug.)

前兩部分技術面試通過之後,剩下最後的HR面試。HR面試主要考察我們的入職意願,時間安排,愛好性格等等軟實力和第三方因素,因為個人差異肯定較大,因此在這裡不做討論~注意一點就好,就是要給HR留下幾個印象:我很希望入職,我是一個陽光上進刻苦聰明的人,並且我有時間精力參加實習,並且不會突然離職。這句話當然不能夠直接說出來,要在和HR的交談中透露出來就行。

2 一些想法和日後的學習計劃

有待補充。