Hey guys,這里是程序員cxuan。歡迎收看我最新一期的文章。今天這篇文章來自我忠實的讀者一個人的體驗。這篇文章寫了他從大一開始進入騰訊的一系列感悟和總結(jié)。希望能幫助你。(大衛(wèi)亞設(shè))。

菜雞歷險記

從二月底開始投簡歷,到四月拿到offer,我的春招結(jié)束了!

選擇直接工作,而不是想大多數(shù)人一樣選擇讀研,真的是一個很艱難的決定,參加校招所經(jīng)歷的迷茫擔(dān)憂焦慮也不亞于參加一場研究生招生考試。

大學(xué)伊始,幾乎和大多數(shù)人一樣,我也想當(dāng)一名好學(xué)生,像助班一樣閃耀,拿到高績點,參加各路競賽,獲取保研資格,把簡歷塞的滿滿當(dāng)當(dāng),懵懂的認知甚至讓我在當(dāng)時一度陷入唯績點論的思維,專心埋頭苦干。

非常遺憾的是,在大一要結(jié)束的那一段時間里,低到讓人抬不起頭來的gpa才讓我意識到并逐漸接受,自己也許真的不擅長考試(說到底還是菜 找借口),即便大一也聽努力,gpa依然很低,這讓我開始逐漸懷疑起自己的能力。

現(xiàn)在看來績點固然重要,但其能夠證明的東西其實比較有限(起碼在計算機領(lǐng)域),除非確實很拔尖,其實大學(xué)里很多課程都懂的。。在這里我并不想去批判大學(xué)的教育,只希望gpa不要成為量化學(xué)生能力的唯一指標和對他人產(chǎn)生傲慢與偏見的理由。

在大一結(jié)束的那個暑假,搬到了新校區(qū),開始新的生活,從那一段時間開始,我偶然間發(fā)現(xiàn)自己對各種amazing的技術(shù)有著十足的興趣,從爬蟲到web,從數(shù)據(jù)分析到機器學(xué)習(xí),基本都有過一段時間的接觸,那段時間幾乎成為了我技術(shù)的啟蒙階段。

時間兜兜轉(zhuǎn)轉(zhuǎn)來到了大二,憑借著自己對技術(shù)能力的熱愛,我滿懷自信的提交了轉(zhuǎn)去計院的轉(zhuǎn)專業(yè)申請,第一志愿,上機考掛,第二志愿,上機考過了缺掛在了面試上,一問原因才得知竟是績點低 + 大一掛了一門通識課。毫不夸張的說,在當(dāng)時對我的打擊真的很大,質(zhì)疑自己的聲音在我腦子里不斷回響,"你一個非科班比得過別人計算機系的同學(xué)嗎?" "你學(xué)技術(shù)不是在不務(wù)正業(yè)嗎????" 那個時候幾乎因此喪到極點,而如果想再下一個學(xué)期轉(zhuǎn)專業(yè)將面臨著降級。

但是在那一學(xué)期,也有一些好事發(fā)生。在大二上憑借我對技術(shù)的興趣,引起了Python課老師的注意,并邀請我加入其課題組,后面老師也變成了我的導(dǎo)師。我也很順理成章的結(jié)識了幾位研究生學(xué)長,在那段日子里,幾乎有讀不完的論文,看不完的算法,一切都很新奇,似乎很快就把我轉(zhuǎn)專業(yè)失敗的負能量拋之腦后。

晃晃悠悠大二就快結(jié)束了。雖然感覺算法領(lǐng)域真的很酷,我也曾幻想著自己能一頭扎入人工智能的領(lǐng)域,并且在導(dǎo)師的帶領(lǐng)下學(xué)習(xí)了一段時間,期間也參加了個比賽拿了個獎和水了一篇專例,其實在內(nèi)心真的很感激,能在大學(xué)生涯遇到這樣一位愿意為本科生付出如此心血的導(dǎo)師真的是我莫大的榮幸。但是反過來說,雖然算法真的挺有意思也非常熱門,但其門檻真的很高而且競爭也越來越激烈。

如何看待2019年秋招算法崗灰飛煙滅?

如何看待算法崗一片紅海諸神黃昏?

。。。

各路985碩士海歸,頂會論文,top競賽balabala,著實勸退。本身對論文數(shù)學(xué)不感興趣的我最后還是放棄了,還是開發(fā)更適合我。

就目前而言,個人認為市面上需要的是具有扎實的計算機基礎(chǔ)且具有一定工程能力的算法工程師,而不是各路導(dǎo)包調(diào)參俠,不管是哪個技術(shù)崗,都需要擁有扎實的編程語言、數(shù)據(jù)結(jié)構(gòu)、計網(wǎng)、操作系統(tǒng)作為基礎(chǔ)。應(yīng)當(dāng)先成為一名合格的軟件工程師,再努力成長為一名合格的算法/機器學(xué)習(xí)工程師。

在20年初,我也最終下定決心,決定未來在Java后端領(lǐng)域深入學(xué)習(xí),現(xiàn)在看來,這個選擇不一定是最好的,但起碼不算差,同時我也退出了導(dǎo)師的課題組,雖然沒有繼續(xù)做下去,但還是打心底的非常感謝導(dǎo)師,因為在做競賽期間導(dǎo)師對我們的幫助可以說是至關(guān)重要,遇到一個愿意為本科生付出如此心血的導(dǎo)師真的是我大學(xué)時光里莫大的榮幸。

晃晃悠悠,從《Java核心技術(shù)卷 I》開始啃,一步一步開始深入,到逐漸開始完成些小項目,前路也慢慢變的明朗起來。

期間也遇到了幾個志同道合的小伙伴一起做項目,雖然有時真的蠻辛苦,但相信幾年后的我回想起來,這肯定是一段非??鞓非抑档昧魬俚臅r光。

進入2021年,俗話說金三銀四,春招也逐漸逼近,從2月底開始,來來回回復(fù)習(xí)了半個多月,最終非常幸運的拿到了騰訊的暑期實習(xí)offer,也許和很多大佬比這不算什么,但能進大廠也算是圓了大學(xué)一直以來的夢想了吧。

作為一個剛剛結(jié)束2021春招的人,談一談自己一開始的烏托邦與最后的現(xiàn)實,騰訊和阿里是我最早選定的目標(因為學(xué)校就在杭州,家在深圳),阿里提前批面了三個部門也都通過了,但最后內(nèi)推流程只能選擇一個部門,一面很順利評價也很好,但在把我晾了近一個月后奇妙的把我掛了,然后被某部門撈,一面通過,二面評價也不錯,然后又等了半個多月,掛(面試體驗和鵝廠比相差甚遠,流程混亂,部門搶人現(xiàn)象也很嚴重),字節(jié)一面掛(發(fā)揮最差的一輪面試),騰訊四輪技術(shù)面+一輪HR面過,??狄惠喖夹g(shù)面通過。在拿到鵝廠offer后也長嘆一口氣,順便把后續(xù)的面試都推掉了。

很早之前就搭建起了公眾號和個人博客,博客也只是偶爾寫一下技術(shù)方面的文章,也許是忙碌(其實就是懶)的原因,一直都沒有付諸行動,希望能憑借自己一點微不足道的經(jīng)驗,分享一下自己的心路歷程,看心情更新:)

數(shù)據(jù)結(jié)構(gòu)與算法

一個可以肯定的點是,無論是哪種技術(shù)崗位,對于校招而言,技術(shù)棧的要求可能不會特別高,但對于思維的靈活性,編碼能力的考量,則是十分看中的,對于算法的準備個人認為應(yīng)該盡早開始,最好養(yǎng)成每天刷每日一題的習(xí)慣,從2020年初開始,我就在LeetCode開始了我的算法學(xué)習(xí)之路,來來回回也刷了500題了,雖然水平遠不及acmer那樣,但扎實程度也足夠應(yīng)付大廠的算法考驗了。

養(yǎng)成一個刷題的好習(xí)慣,從長遠來看對編碼能力的提升很有幫助!

附上一些個人總結(jié)的不完全要點:

  • 排序(快排、堆排、歸并、冒泡、希爾、選擇 等)基本思想 時間復(fù)雜度 穩(wěn)定性 最好都能手寫
  • DFS、BFS、回溯算法
  • 單調(diào)棧
  • 貪心算法
  • DP(例如背包問題等)
  • LRU(雙向鏈表+HashMap)
  • topN問題(海量數(shù)據(jù)找出第N大的數(shù)據(jù))
  • 大文件統(tǒng)計詞頻(字典樹)
  • 位運算
  • 雙指針
  • 鏈表
  • 二叉樹
  • 記憶化遞歸
  • 二分查找
  • 堆(例如 大/小根堆)
  • 圖(有向無向圖、dijkstra、floyd算法之類的)
  • 并查集
  • 滑動窗口(Sliding Window)
  • 紅黑樹
  • AVL
  • BTree、B+Tree

再附上一點比較熱門的算法學(xué)習(xí)書籍和github地址吧:

  • 劍指offer(非常經(jīng)典,幾乎涵蓋了常見的算法面試題)
  • 算法導(dǎo)論(可能會比較難,但是這本書也算算法界的圣經(jīng)了吧)
  • labuladong 的算法小抄:HTTPS://github.com/labuladong/fucking-algorithm

計算機網(wǎng)絡(luò)

計網(wǎng)的重要性同樣不言而喻,個人總結(jié)的一些不完全的要點如下:

  • HTTP 1.1、2.0 和 3.0 的新特性
  • HTTP常見狀態(tài)碼及含義
  • HTTPS(握手、CA、解決的問題、對稱加密與非對稱加密等)
  • 常見HTTP請求方式的含義
  • 如何優(yōu)化HTTP/HTTPS
  • OSI七層與TCP/IP四層區(qū)別及其含義
  • TCP三次握手(是什么、為什么)
  • TCP四次揮手(是什么、為什么)
  • TCP TIME_WAIT CLOSE_WAIT狀態(tài)
  • TCP長短連接
  • TCP的特點及報文結(jié)構(gòu)
  • TCP是如何保證可靠傳輸?shù)?/li>
  • TCP的重傳機制
  • TCP的流量控制與擁塞控制
  • TCP滑動窗口
  • UDP特點、使用場景、報文結(jié)構(gòu)
  • DNS解析及其過程
  • IPv4、IPv6區(qū)別
  • IP地址的分類
  • 子網(wǎng)掩碼的含義
  • DHCP協(xié)議
  • ICMP協(xié)議(ping命令)
  • MAC地址的含義
  • 交換機和路由器的區(qū)別
  • ARP協(xié)議
  • 瀏覽器輸入url發(fā)生了啥

計網(wǎng)就沒啥好說的,基礎(chǔ)中的基礎(chǔ),面試中的???,各路謝希仁自頂向下黑皮書啃起來就完事了~

操作系統(tǒng)

個人總結(jié)的一些不完全要點:

  • 操作系統(tǒng)的四個特性
  • 用戶態(tài)和內(nèi)核態(tài)(是什么、為什么)
  • 上下文切換
  • IPC通信
  • 線程同步的方式
  • 進程、線程、協(xié)程的區(qū)別
  • 進程的三態(tài)模型
  • 進程調(diào)度算法
  • 死鎖產(chǎn)生的四大條件
  • 死鎖的預(yù)防
  • 如何解決死鎖
  • Linux IO模型(阻塞式IO 非阻塞IO IO多路復(fù)用 信號驅(qū)動IO 異步IO)
  • Reactor模型
  • 零拷貝
  • 虛擬內(nèi)存
  • 分頁 分段 段頁式區(qū)別及含義
  • 頁面置換算法
  • 磁盤調(diào)度算法
  • Linux文件系統(tǒng)組成
  • 硬鏈接與軟鏈接

Java基礎(chǔ)

個人總結(jié)的一些不完全要點:

  • 問到爛的HashMap、HashTable、ConcurrentHashMap
  • 一些常見的集合類(TreeMap ArrayList LinkedList ArrayDeque之類的)
  • equals和hashCode
  • ==與equals
  • 如何理解面向?qū)ο螅ǔ橄?繼承 多態(tài) 封裝)
  • Java異常分類
  • 深拷貝與淺拷貝
  • 七大基本類型(語法糖 包裝類)
  • Object類有什么方法
  • StringBuilder與StringBuffer
  • String的intern()方法
  • 為什么String不可變
  • jdk的新特性(8 lambda Optional 9 String改成byte[]存儲之類的)
  • Java BIO NIO AIO
  • 泛型和類型擦除

推薦書籍:《Java核心技術(shù)卷 I / II》,進階點看《Effective Java》《Thinking in Java》

這里我個人并不是很推薦去看視頻,論知識的獲取而言,我更偏向自己探索吸收,而不是以"喂"的方式學(xué)習(xí)。

JVM

個人總結(jié)的一些不完全要點:

  • Java 內(nèi)存模型、運行時數(shù)據(jù)區(qū)
  • Java 對象創(chuàng)建過程
  • Java 對象的構(gòu)成
  • 類加載過程
  • 類加載器及雙親委派模型(是什么、為什么、如何主動破壞、優(yōu)缺點、如何實現(xiàn))
  • 堆內(nèi)存分配分配策略
  • 四種引用類型區(qū)別及含義
  • 如何判斷對象已死亡
  • 內(nèi)存泄露分析
  • 常見GC算法
  • 常見垃圾回收器(CMS、G1等)
  • Java到底是值傳遞還是引用傳遞
  • Full GC原因及排查
  • JVM常用監(jiān)控工具(例如 jmap jstack等)
  • JVM常見參數(shù)(例如Xms Xms SurvivoRatio等)

周志明老師的《深入理解Java虛擬機》啃起來就完事,涉及到的知識也和操作系統(tǒng)有些關(guān)聯(lián),對于Java的學(xué)習(xí),切勿停留表明語法,都動手實踐,切勿眼高手低。

多線程

個人總結(jié)的一些不完全要點:

  • 線程池(Executor框架,為什么阿里巴巴Java開發(fā)手冊不允許使用 Executors 去創(chuàng)建線程池,優(yōu)點,如何使用,如何配參數(shù)「可以看看這篇:Java線程池實現(xiàn)原理及其在美團業(yè)務(wù)中的實踐」)
  • AQS 原理
  • 常見JUC工具類(CountDownLatch、CyclicBarrier、Semaphore、Atmoic原子類)
  • synchronized關(guān)鍵字
  • ReentrantLock可重入鎖
  • 自旋鎖 / 互斥鎖
  • 樂觀鎖 / 悲觀鎖
  • 公平鎖 / 非公平鎖
  • 讀寫鎖
  • Java鎖升級流程(無鎖 偏向鎖 輕量級鎖 重量級鎖)
  • ThreadLocal(使用場景 原理)
  • volatile關(guān)鍵字(是啥、做了啥、禁止指令重排序、緩存一致性原理、happens-before原則)
  • Java線程的狀態(tài)(NEW RUNNABLE BLOCKED WAITING TIMED_WAITING TERMINATED)
  • Object.wait T T T方法作用

推薦書籍:《Java并發(fā)編程實戰(zhàn)》《Java并發(fā)編程的藝術(shù)》都很經(jīng)典

Spring框架

個人總結(jié)的一些不完全要點:

  • Spring IoC思想、特點、原理
  • Spring事物
  • Spring循環(huán)依賴
  • Spring AOP原理(動態(tài)代理 JDK Proxy CGLib AspectJ java反射機制等)
  • Spring MVC原理
  • SpringBoot自動裝配原理
  • Spring常見模塊(ioc aop aspects jdbc jms orm web test)
  • Spring事物傳播機制
  • Spring用到的的設(shè)計模式
  • Spring Bean的生命周期

針對Spring框架的學(xué)習(xí)一定要多實踐,多翻看官方文檔,切勿只停留于片面的技術(shù)博客,看看開源項目,從一個小demo開始做起,慢慢就會逐漸領(lǐng)會到框架的精髓。

Mysql

個人總結(jié)的一些不完全要點:

  • 數(shù)據(jù)庫設(shè)計的三大范式
  • MySQL常見存儲引擎(InnoDB MyISAM Archive等)
  • 死鎖 innoDB行鎖(gap X S鎖)
  • MVCC機制(原理及實現(xiàn) undo log 一致性視圖)
  • 事物的ACID特性
  • 事物的隔離級別
  • 臟讀 幻讀 可重復(fù)讀
  • 一條SQL語句執(zhí)行的過程(binlog redolog)
  • 索引(聚簇索引、輔助索引、聯(lián)合索引、原理)
  • SQL語句分析
  • 慢查詢分析
  • SQL語句優(yōu)化
  • 讀寫分離 分庫分表(水平垂直拆分)

推薦書籍:《MySQL必知必會》《SQL基礎(chǔ)教程》

極客時間丁奇老師的《MySQL實戰(zhàn)45講》也有口皆碑,很推薦!

多聯(lián)系SQL語句,在面試中有可能會讓你手撕SQL題,多在項目中對sql進行優(yōu)化、分析。

Redis

個人總結(jié)的一些不完全要點:

  • 五種數(shù)據(jù)類型(string、list、hash、set、zset)
  • 其他數(shù)據(jù)類型(BitMap Geospatial hyperloglog等)
  • Redis 單線程模型(為什么高效?為什么不用多線程?Redi多線程的目的?)
  • Redis IO 多路復(fù)用機制(select、poll、epoll、Reactor模型)
  • 持久化機制(快照、AOF)
  • Redis內(nèi)存淘汰機制
  • 如何判斷數(shù)據(jù)過期?
  • Redis事物
  • Redis漸進式rehash
  • Redis集群(主從復(fù)制、哨兵、cluster集群)
  • 如何保證數(shù)據(jù)庫緩存一致性?

分布式相關(guān)

分布式領(lǐng)域的知識真的太多太多了,幾乎是一個無底洞,如果對其中一兩個框架比較熟悉其實在面試中也是很加分的。

不完全要點:

  • CAP原則與BASE理論
  • 分布式一致性相關(guān)(ZooKeeper、Paxos協(xié)議、ZAB協(xié)議之類)
  • NoSQL(Redis、MongoDB、memocached等)
  • SpringCloud(服務(wù)發(fā)現(xiàn)與注冊、負載均衡、網(wǎng)關(guān))
  • RPC框架(例如Dubbo這類,序列化協(xié)議protobuf這類)
  • 消息隊列(業(yè)內(nèi)使用最多的Kafka、阿里的RocketMQ、RabbitMQ)
  • 分布式事物、分布式鎖

編程工具

  • Git
  • Docker
  • Linux命令

投遞與選擇

金三銀四、金九銀十分別對應(yīng)春招和秋招的時間節(jié)點,春招大部分面向的是實習(xí)生的招聘,而最后在秋招環(huán)節(jié),一大批的hc要被成功轉(zhuǎn)正的實習(xí)生所占有。

可能對于想進大廠的雙非本科生而言,大三的春招就是你進大廠幾率最大的時候,往往越到后面,面試的要求會越來越高,"機會是留給有準備的人"這句老話一點都沒有錯。

盡量選擇提前批,很多公司的提前批可以免去筆試,而且這時候hc多,面試流程快,只要通過面試基本就有位置。

在投遞上,盡可能進大公司,有大公司給你做的背書會讓你的職業(yè)生涯越走越順。

一點軟實力

拋開技術(shù),其實無論是性格也好,還是情商也罷,雖然表面上看對技術(shù)崗似乎影響不大,但這玩意切切實實會潛移默化的影響別人對你的印象。

就比如在對一個問題的闡述上,一些人的發(fā)言聽起來就很有層次感,很舒服,包括與面試官的溝通(亦或是聊天瞎扯),一個性格隨和開朗,不卑不亢,說話有調(diào)理的人,誰不喜歡呢?

一位前輩也告訴我,拋開技術(shù)層面,面試官也會很在意你的價值觀與為人,如果價值觀或者人品出現(xiàn)問題則會一票否決。一個高傲,說話有棱有角,目中無人的候選人,即便技術(shù)再好可能也不太會博得面試官的認可。

其實軟實力這一塊要在生活中慢慢鍛煉,與不同的人接觸溝通,適應(yīng)不同人的性格。謙卑(不是自卑)的態(tài)度,坦誠的交流,冷靜的思考,往往是一場面試成功的潛在因素。

心態(tài)問題

「少抱怨,行動才是緩解焦慮的最佳途徑」

幾乎沒有人能夠做到安逸的度過一生,產(chǎn)生焦慮的情緒也十分正常,所有的焦慮都來自某種持續(xù)的心理矛盾。

  • 警惕身邊販賣焦慮的消息,冷暖自知
  • 盡自己最大的努力,只為讓未來的自己不后悔

真的很推薦大家能養(yǎng)成堅持鍛煉的習(xí)慣

每周三次、每次三十分鐘的體育鍛煉,與最強勁的精神藥物,有同樣的效果。

堅持鍛煉給人帶來的好處,其實是潛移默化的,身體素質(zhì)、心態(tài)、外表、性格都會慢慢變好,而且,晚上的時候,會睡得更好。

仿佛亂七八糟的想法和擔(dān)憂,全部隨著汗水流走了,夢中無事,睡眠質(zhì)量的提高,這本身也能緩解焦慮情緒。運動可以讓身體產(chǎn)生內(nèi)啡肽,極大地緩解焦慮水平,一般來說,跑步之后,雖然身體是累的,但精神明顯清爽很多。

給予自己積極的心理暗示,切勿盲目自信,盡力去做,不要讓自己后悔,不管結(jié)果如何。

說在最后

腳踏實地,保持謙卑。

技術(shù)這條路遠遠沒有盡頭,且不過是圍城罷了,外面的人想拼命往大廠鉆,中年程序員想拼命擺脫危機,但無論如何,做技術(shù)的一定要保持一個謙卑的心態(tài)。

一點拙見,還望包涵!

1.《網(wǎng)絡(luò)通識課掛了怎么吧?終于找到答案了我是如何進入騰訊的?》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。

2.《網(wǎng)絡(luò)通識課掛了怎么吧?終于找到答案了我是如何進入騰訊的?》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。

3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/gl/3052575.html