面經

  最近不少學弟學妹私戳我,想讓我分享一下一些互聯網行業的面試經驗,因此打算寫下這麼一篇文章,算是樂於助人吧,固然本文主要的對象是技術崗,非技術崗也能夠勉強湊合看看-_-。php

一:招聘時間

  對於一些大型的互聯網公司,招聘通常分爲三個時間段:春招(主要是暑假實習生招聘和少許補招),秋招(正式招聘),以及平常實習(顧名思義)。python

  春招:因爲阿里開了個一個不太好的頭,春招的實習一再提早,今年過春節以前就已經開始,通常持續到5~6月,春招招聘的實習生因爲實習轉正的機會會很大,並且是做爲一種互聯網企業宣傳自身的一個渠道,難度相對較大。但好處在於若是順利轉正就能夠擁有一個美滋滋的大四生活,就能夠浪裏格浪了。並且實習經歷做爲去往大型互聯網企業的金鑰匙,若是想要找到一份滿意的工做的話,實習經歷必須受到重視。就互聯網行業而言,若是到了秋招這個時間段尚未實習經歷,除非你特別優秀,不然很難找到一份很滿意的工做。mysql

  秋招:這也是收穫的季節(8月末到11月),基本在這個階段,有意向從事互聯網行業的應屆生都會確認本身的最終去向,面試難度稍大於春招,優勢在於不須要實習就能夠直接拿到offer。linux

  平常實習:主要面向的是非應屆。優勢在於難度遠低於春招秋招,缺點在於要求實習時間較長,至少半年,並且大部分沒法轉正。git

二:招聘流程

  如今大型互聯網公司面試通常分爲兩個類型:內推和正式招聘。golang

  內推和正式招聘最大的區別是內推不須要筆試,但因爲現今內推氾濫,致使很多互聯網公司內推也須要筆試,好比網易,京東...。這無形中也弱化了內推的意義,事實上真正的內推不是指單純把你的簡歷扔到內推系統裏,而是,本身在各類渠道找到適合本身的某個公司的具體團隊,而後想辦法把本身的簡歷直接扔給這個團隊的leader,這樣獲得offer的機率會高不少,從而極大程度下降運氣在offer獲取的做用(特別是騰訊,阿里,對於實力中等偏上的童鞋,可否拿到offer,運氣佔了很大比例)。面試

  通常而言,正式招聘流程爲: 筆試,初試,複試,HR面試(可能會有加面)。固然這也不是絕對的,就我所知,有人面試阿里雲,前先後後面了8面。redis

 

三:如何寫出一份讓人眼前一亮的簡歷

  首先,簡歷在求職過程,是求職者的門面,一份優質的簡歷意味着你能更大機率的拿到面試資格,而且能獲得更高的印象分。然而,最近幫不少人內推,就簡歷而言,優秀的簡歷很是優秀,可是部分簡歷確實糟糕透了。優秀的簡歷都是各不相同的,糟糕的簡歷確實驚人的類似,總結了一下一份糟糕的簡歷有哪些特色:算法

  1:內容乾癟,沒有任何實在內容,更別說有什麼亮點了。通篇講述本身會什麼,可是卻沒有實例去證實本身是真的會這項技能的。好比說本身擅長JAVA,可是在實踐經歷中,沒有任何和Java開發相關的內容。這是絕大部分糟糕簡歷最類似的一點。spring

  2:內容主題不明確,面試計算機技術相關崗位,卻把大部分筆墨放在學校的社團活動,對於技術崗而言,這些社團活動一筆帶過就好。

  3:內容不在多,而在精。看過幾份技術崗的簡歷,竟然把計算機二級也寫了上去,然而這並非加分項,而是減分項,一份優秀的簡歷,必須有本身的逼格,不是什麼都往上寫的

  因此呢,怎麼寫好一份合格的簡歷呢!真要細細道來的話,能夠獨立成一篇文章,因爲篇幅緣由,就簡述一下:

  1:一份合格的簡歷應該是有骨也有肉的,你會什麼,掌握了什麼技能 就是一份簡歷的骨骼,實際例子來證實你掌握這項技能就是簡歷的肉。骨肉相連,氣血才能暢通。有人會說,我沒有例子能夠證實我掌握這項技能,那你能夠反思一下本身,你真的掌握了這項技能嗎?

  2:一份優秀的簡歷,可讓面試官看到你簡歷的第一眼,就明白你想講述什麼,你的擅長點是什麼。舉個例子,我幫某個學弟改簡歷,跟他說,你的優點是有比較好的ACM經歷,對安全感興趣,並有必定的基礎,並由較好的自學能力。你的簡歷只要從頭至尾把這個思路貫徹到底,就基本沒什麼問題。把一些亂七八糟的東西所有去掉,必定要讓面試官看到你簡歷的第一眼,腦子天然而然的就把你想表達寫出來。最後的結果是,內推系統的內推理由就是:比較好的ACM經歷,對安全感興趣,並有必定的基礎。這樣的一份簡歷就是一份成功的簡歷。

  3:必定要有亮點,其實面試官呢都是但願在面試的過程當中發現咱們的亮點和優點,從而展開更深層次的交流,可是每每在簡歷中沒有一個讓他詢問的入口,這樣就可能致使他會隨意問。隨意問的結果是容易遇到本身不擅長的地方,那麼GG了。對於亮點,也要多作準備,思考面試官會從哪點切入,並提早作好準備。

  最後補充一句,簡歷請自動轉化爲pdf格式!!!真的沒人會爲了打開你的簡歷專門下載某個閱讀軟件。

 

四:如何準備面試筆試:

  最好的準備就是:時刻準備着!這不是抖機靈,而是事實!!除非特別天資聰穎的萬分之一,絕大多數人的智力都是通常的,對於某項技能的掌握程度每每和花費的實踐成正比。在平時就須要有意識的規劃本身的將來,併爲之鍛鍊本身的能力。全部的臨場準備都是基於本身的硬實力而言的。固然,這些並不屬於本章的主要內容,本章的主要內容是如何在幾個月中提升本身的面試能力,順利拿到offer。

  首先,你須要知道一家成熟的互聯網公司究竟須要什麼樣的應屆生:

    1:優秀的人(固然這是廢話):具備較多較好的實踐經歷,或者各類高質量的比賽大獎拿到手軟。好比:ACM,CTF

    2:有潛力的人(基礎功紮實,自學能留極強)

  根據本身的特色,有意識的在面試過程當中體現出來,那麼你的面試就是成功的。固然,怎麼體現,這也是個大學問,

  1:這裏就會提到:面經。先推薦一個網站 www.nowcoder.com(牛客網),這裏面有豐富的面經和足量的實時信息,建議有意進入互聯網行業的童鞋有事沒事多看看。裏面基本囊括了面試過程當中的全部基礎知識。以及不少有價值的面試技巧總結。在翻看面經的時候,徹底能夠根據面經本身模擬面試一遍,查漏補缺,而不是簡單的一掃而過,就這樣,在一次次模擬面試中,能夠快速的提升本身的面試能力(注意,是面試能力,而不是實際能力)。

  2:深度和廣度並行,廣度基本肯定了你是否可以經過初試,深度肯定了本身可否經過複試。對於廣度而言,只要多看面經,多模擬,多查漏補缺,基本問題不大,而深度就是靠本身的亮點去發散了,這要作到你對你的亮點的知識點理解的很深,這塊也能夠有針對性的惡補。

  最後抄一下對於以前別人總結的對於硬實力的描述,我的認爲總結的很是到位,能夠針對性的惡補一下,

  然找工做是應試,要肯定目標,找準重點。若是面試老是失敗,那緣由通常都是目標定高了。準備實習不要用很厚很厚的手冊書,除非你以前已經通讀過一遍,這點很重要,不然你將會浪費大量時間。別人經驗貼裏所列參考書籍毫不是短短一兩個月看完的,若是之前沒看過,請不要盲從。:

    • 基礎知識:
      1. 算法和數據結構
        1. 數組、鏈表、二叉樹、隊列、棧的各類操做(性能,場景)
        2. 二分查找和各類變種的二分查找
        3. 各種排序算法以及複雜度分析(快排、歸併、堆
        4. 各種算法題(手寫)
        5. 理解並能夠分析時間和空間複雜度。
        6. 動態規劃(筆試回回有。。)、貪心。
        7. 紅黑樹、AVL樹、Hash樹、Tire樹、B樹、B+樹。
        8. 圖算法(比較少,也就兩個最短路徑算法理解吧)
      2. 計算機網絡
        1. OSI7層模型(TCP4層)
          • 每層的協議
          • url到頁面的過程
        2. HTTP
          • http/https 1.0、1.一、2.0
          • get/post 以及冪等性
          • http 協議頭相關
          • 網絡攻擊(CSRF、XSS)
        3. TCP/IP
          • 三次握手、四次揮手
          • 擁塞控制(過程、閾值)
          • 流量控制與滑動窗口
          • TCP與UDP比較
          • 子網劃分(通常只有筆試有)
          • DDos攻擊
        4. (B)IO/NIO/AIO
          • 三者原理,各個語言是怎麼實現的
          • Netty
          • Linux內核select poll epoll
      3. 數據庫(最多的仍是mysql,Nosql有redis)
        1. 索引(包括分類及優化方式,失效條件,底層結構)
        2. sql語法(join,union,子查詢,having,group by)
        3. 引擎對比(InnoDB,MyISAM)
        4. 數據庫的鎖(行鎖,表鎖,頁級鎖,意向鎖,讀鎖,寫鎖,悲觀鎖,樂觀鎖,以及加鎖的select sql方式)
        5. 隔離級別,依次解決的問題(髒讀、不可重複讀、幻讀)
        6. 事務的ACID
        7. B樹、B+樹
        8. 優化(explain,慢查詢,show profile)
        9. 數據庫的範式。
        10. 分庫分表,主從複製,讀寫分離。
        11. Nosql相關(redis和memcached區別之類的,若是你熟悉redis,redis還有一堆要問的)
      4. 操做系統:
        1. 進程通訊IPC(幾種方式),與線程區別
        2. OS的幾種策略(頁面置換,進程調度等,每一個裏面有幾種算法)
        3. 互斥與死鎖相關的
        4. linux經常使用命令(問的時候都會給具體某一個場景)
        5. Linux內核相關(select、poll、epoll)
      5. 編程語言(這裏只說Java):
        1. 把我以後的面通過一遍,Java感受覆蓋的就差很少了,不過下面仍是分個類。
        2. Java基礎(面向對象、四個特性、重載重寫、static和final等等不少東西)
        3. 集合(HashMap、ConcurrentHashMap、各類List,最好結合源碼看)
        4. 併發和多線程(線程池、SYNC和Lock鎖機制、線程通訊、volatile、ThreadLocal、CyclicBarrier、Atom包、CountDownLatch、AQS、CAS原理等等)
        5. JVM(內存模型、GC垃圾回收,包括分代,GC算法,收集器、類加載和雙親委派、JVM調優,內存泄漏和內存溢出)
        6. IO/NIO相關
        7. 反射和代理、異常、Java8相關、序列化
        8. 設計模式(經常使用的,jdk中有的)
        9. Web相關(servlet、cookie/session、Spring<AOP、IOC、MVC、事務、動態代理>、Mybatis、Tomcat、Hibernate等)
        10. 看jdk源碼
    • 項目經歷
      • 這個每一個人的項目不一樣,覆蓋的技術也不同,因此不能統一去說。
      • 這裏的技巧呢,在下面也會詳細說明。
      • 無非是找到本身項目中的亮點,簡歷上敘述的簡練而且吸引眼球,同時本身要很熟悉這個點(畢竟能夠提早準備)
      • 最好本身多練,就像有個劇本或者稿子同樣,保證面試中能夠很熟練通俗地講出,而且讓人聽着很舒服。
    • 實習經歷
      • 這個很抱歉,由於我是找實習的經歷,因此也沒有實習經歷的講述經驗。
      • 但我想若是你有實習經歷,那面試過程的重點也會在實習作了什麼上面,因此你們最好對實習所作的工做作一個總結,而且一樣抓出亮點,搞懂內部原理,提早鍛鍊講述的過程。
    • 其餘擴展技能(這個方方面面太多了,所有掌握基本上不可能,只是做爲你們其餘時間擴充技能的參考)

      • 分佈式架構:(瞭解原理就行,若是真的有實踐經驗更好)
        • CAP原理和BASE理論。
        • Nosql與KV存儲(redis,hbase,mongodb,memcached等)
        • 服務化理論(包括服務發現、治理等,zookeeper、etcd、springcloud微服務、)
        • 負載均衡(原理、cdn、一致性hash)
        • RPC框架(包括總體的一些框架理論,通訊的netty,序列化協議thrift,protobuff等)
        • 消息隊列(原理、kafka,activeMQ,rocketMQ)
        • 分佈式存儲系統(GFS、HDFS、fastDFS)、存儲模型(skipList、LSM等)
        • 分佈式事務、分佈式鎖等
      • 腳本語言:(只是做爲橫向擴充,通常問到linux也會問問shell腳本)
        • python
        • php
        • shell
        • golang
        • ...
      • 大數據與數據分析:
        • hadoop生態圈(hive、hbase、hdfs、zookeeper、storm、kafka)
        • spark體系
        • 語言:python、R、scala
        • 搜索引擎與技術
      • 機器學習算法:
        • 模型和算法不少。不細說了,若是很熟練就去投算法,國內不少公司都算法崗都很稀缺,其餘崗能夠大概瞭解下理論。
      • 其餘工具的理論和使用:
        • 這個更多了,問的多的好比git、docker、maven/gradle、Jenkins等等,本身須要的話選擇性地去學。

 

五:面試技巧:

  第四章主要講的是一些硬實力,而在本章主要講的是一些軟實力。也就是面試的一些套路:

  1:回答問題不要簡單的對和不對,給本身留點餘地也給面試官留點餘地是吧!

    例:京東hr面(雖然沒面到這一面):若是這是你同時有阿里和京東offer,你會選擇哪家?

    耿直的說:「確定阿里呀!」。你這樣回答估計hr的評價高不到哪裏去。

    答:"我以爲!不像應屆生,更多的是要去創造價值。就實習生而言,更多的是學習,哪裏和本身的方向更契合,哪裏能學到更多東西就去哪裏吧」

    例:華爲hr面:你怎麼認爲加班的?

    耿直的回答:「不喜歡加班」。講真的,雖然你只是想把華爲當備胎,這麼回華爲還真不給你進備胎池的機會

    答:「對本身熱愛的行業,沒什麼加班不加班直說吧!就好像,一我的喜歡打遊戲,不能說他工做努力吧」

  2:千萬不要踩雷區,什麼都不要過得太過了

    能夠適當的開點小玩笑,活躍一下氣氛,技術面雖然說是技術面,但給評價的終究是面試官,一個愉快的交流能你加分很多,可是千萬別給面試官留下嬉皮笑臉,不學無術的印象(特別hr),那你真的悲劇了。能夠適當美化本身寫的 東 西,可是不要無中生有,終究只有從頭至尾本身寫的內心纔有底,若是被揭穿了,那是真的悲劇了。雷區的話,這個真的只有本身把握。面試多了天然就有感受了,雖然我面的也很少

   3:轉話題

    遇到不會的,有意識的把話題扯到本身擅長的上面,不要耿直的一直聊下去,由於面試官會無心識的把話題扯到他本身擅長的領域,而若是你不擅長那評價真是悲劇了。面試官通常也想找到你的閃光點,而不是使勁的懟你。因此呢,學會轉移話題仍是挺重要的

   4:抓住每一個加分點

    通常來講,面試最後一個問題都是:「我這邊問完了,你有什麼問題嗎?」這個時候,問一些沒養分的問題真沒要的,總得問一些稍微有養分的問題吧

    例:騰訊終面:「此次面試中,請問一下我有什麼不足須要在將來填補和提升的嗎?」

    好處:「好爲人師」是人的通病嘛!面試官說的愉快,本身過得機率也大,並且還能表現出本身比較好學。固然,還能夠從他的對話中,探探口風,看過沒過。一箭雙鵰呀

  5...

  所謂的面試技巧太多了,具體的仍是須要在實踐過程多體會,多面試,面試也是一個提升的過程,面試過程當中最容易發現本身的不足,從而查漏補缺,因此,建議每次面試都錄好音,而後面試以後多聽幾遍,多總結多思考,這樣才能快速提升。

六:總結

  其它內容想到再說

相關文章
相關標籤/搜索