
前言
這篇博客記錄第二次騰訊后臺開發社招面試流程,雖然面試流程因人而異,但就我個人感受而言,騰訊的面試從考察內容方面來講,還是有一定的共通性,這一點,可以從網上眾多的面經可以看出,因此,就有了本篇博客,感興趣的同學可以參考下,文章比較長,請耐心閱讀,
五月上旬從前公司離職,即所謂的裸辭,離職后沒有立即找作業,花了20天時間對過往兩年的作業進行一番總結和梳理,期間主要分析了Linux內核網路原始碼,時間到了七月中旬也沒有開始找作業,因為期望去一家大公司,但是自身實力還不允許,網上看了眾多面經,以及復習我之前收集的面試題,大廠對演算法與資料結構要求比較高,因此,先從演算法與資料結構開始復習,大學的時候學習過這兩門課,復習的時候重新將大學課本拿過來學習,《資料結構(C語言版) 嚴蔚敏》和《演算法設計與分析使用教程》,
大概花了1.5月,資料結構從基本的資料結構復習,包括線性表、堆疊和佇列、串、陣列、樹和二叉樹、圖和排序演算法,除了書本的理論復習,還借助leetcode網站進行刷題練習,leetcode我刷了大概100多道題,目前總共有1000多道,刷題無需追求數量,更重要的是能夠理解解題思想,這里推薦下力扣的專項練習欄目,我基本上把專項練習全做了,對資料結構的理解幫助真的非常大,除了leetcode,另一項練習就是《劍指offer》,這里也要推薦下,面試的手寫演算法考察大概有50%的題型出自本書,在我自己實際的面試程序中,考察的手寫演算法題基本上來自 leetcode(簡單和中等題型) 和《劍指offer》,
刷題貴在精不在多,個人感覺,普通演算法題基本上是套路題,只要掌味訓本資料結構和基本演算法,足以應付絕大部分考察,后期我基本上不刷題了,偶爾挑一道簡單題保持手感,這里要額外說一下,基本的排序演算法一定要掌握,比如冒泡、選擇、插入、快排、歸并、堆排、桶排序、基數排序,這些排序的時間復雜度和空間復雜度以及區別、使用場景一定要了然于胸,快排、歸并、堆排要能夠迅速手寫出來,到了復習后期,我每天都會練習手寫這三個排序,現在基本上保證這三個排序演算法每個用時在165秒內寫出,排序之所以重要,是因為很多題目都會用到排序,比如海量資料,資料預處理等,不同場景用到的排序也不相同,
演算法方面,遞回和遞推用的也比較多,這里需要注意遞回有可能存在重復計算問題,此外,dp問題也可以練習下,演算法方面還可以參考左神的《直通BAT演算法精講》系列視頻,除了基本的資料結構之外,紅黑樹,平衡樹考察的也比較多,這里也要重點關注下,資料結構和演算法復習時間1.5月,相當于其它知識所需時間的總和,掌握好資料結構和演算法對作業系統、編程語言、計算機網路等也有相當大的幫助,比如,c++ map和set的底層實作基于紅黑樹,deque的雙端佇列,list的雙向鏈表,hashmap和hashset的哈希,作業系統里面行程調度演算法用到紅黑樹等,
演算法和資料結構復習期間,去騰訊面試了一次,面經參考之前的博客,從結果來看,真是慘不忍睹,演算法和資料結構這一塊還好,因為有很好復習緣故,問題都能夠回答,但是在作業系統、計算機網路、編程語言等角度來看是不及格的水平,騰訊面試考察對軟體工程真的是很全面,這一點,在招聘說明里面有詳細提到:
具備全面的軟體知識結構認知(作業系統、軟體工程、設計模式、資料結構、資料庫系統、網路安全);
此次面試之后,又陸陸續續參加了其它幾個面試,包括江行智能、海康威視,基本上都因為作業系統、計算機網路、編程語言的問題,沒有拿到offer,有些公司的技術堆疊是c++,我只是在大學的時候用過c++,畢業三年一直從事嵌入式c語言的開發,因此,對于c++的問題,無論簡單還是困難,都回答不上來,這大概是所有面試失敗的共同原因之一,此外,計算機網路是真的沒有復習過,沒有任何準備,如此,失敗也是必然,至于作業系統,很多內容都是知其然不知其所以然,比如行程管理、調度,記憶體分配等等,通過總結面試失敗的原因,以及參考了網上數量眾多的面經,歸納了自己需要補足的地方:c++,作業系統,計算機網路以及額外的擴展知識.
c++的復習用了四周,將800多頁的《Primer c++》看了三遍,《STL原始碼剖析》看了大概三遍有余,第一遍看的時候,僅是大概瀏覽一下全書內容,第二遍是細致的閱讀各個章節的內容,第三遍則是依據網上的面經,試題,主要閱讀重點章節,在之后的面試程序中,基本上沒有被c++的問題難倒過,文后給出我匯總的c++考點,《Primer c++》全書800多頁,看了三遍,用了三周左右,這還是以前學習過的,如果要是沒學過,不知道需要多久,
作業系統這一塊,重點關注行程管理、調度、行程間通信、執行緒同步、記憶體管理、虛擬記憶體等等,復習的方法是先總結網上面經提到的考點,然后結合書本分析,這一塊我主要看了《深入理解Linux內核》,《Linux環境編程:從應用到內核》兩本書,這里推薦下《Linux環境編程:從應用到內核》這本書,無論從實戰還是原理角度來講,都講的非常好,作業系統的問題在面試程序中考察的特別多,而且考點也很多,因為考點眾多,所以很難面面俱到,所以提醒各位同學千萬不要貪多求全,否則,在面試的程序中很難自圓其說,雖說不要貪多求全,但是基本的知識一定要掌握,作業系統的考察點我也有總結出,文后給出,
計算機網路這一塊考察的也非常多,看一下騰訊的招聘需求
精通網路編程、熟悉網路知識,熟悉TCP/IP協議;
計算機網路考察的主要是原理性知識,這里重點關注TCP協議,這一塊的復習作業,我主要參考了《計算機網路 謝希仁版》的TCP那一章節,騰訊的TCP知識考察基本上都在這一章,考點包括TCP的三次握手、四次揮手、擁塞控制、nagle演算法,karn演算法等等,這一塊相對來說,只要復習到位,難度不大,
根據幾次面試的實際情況,結合網上的面經,我把自己的復習分為6個部分:作業系統、計算機網路、演算法和資料結構、編程語言(c++ & golang)、專案經歷、擴展知識,
因為專案里面涉及golang開發,因此,偶爾也會被問及相關問題,golang語言我主要復習了golang的GC演算法,Go 協程模型,channel實作機制,cgo機制等,學習多了,就會發現,很多知識都是通用的,比如Go的GC,和c++的allocator兩級空間配置器、Linux記憶體的伙伴關系演算法,都是基于記憶體池的理念,

簡歷制造
專案經歷這一塊問的比較多,先說下關于簡歷的事情,建議大家使用pdf格式保存簡歷,因為word檔案在某些平臺會亂碼,對于簡歷上的專案,一定要精通,包括專案的架構、技術難點等等,有些面試官會對你的專案進行刨根問底式的追問,考察你對專案的掌握程度,很多時候,距離我們的專案完成已經過了很長時間,如果面試的時候突然被問,沒做任何準備的話,臨場不一定能夠想起來,那場面就很尷尬,你說專案是自己做的,結果問的時候你又說不清楚...... 總之,事先準備,在面試程序中就可以游刃有余的處理,此外,并不是所有的專案都要寫,撿一些重要的,關聯度強的專案放上去,讓面試官和你有溝通區間,因為搞嵌入式通信的,很多專案涉及驅動開發,但這些內容對于互聯網后臺開發而言,一般情況下接觸不到,前期我的簡歷有很多涉及驅動開發專案,結果有些面試官看到后一臉茫然,后來我就把關聯不強的專案去掉了,
面前準備
通信行業和互聯網行業技術差別還是蠻大的,互聯網行業技術更新快,通信行業則著重于穩定,對技術要求不是很高,所以,如果從通信行業跳到互聯網行業,還是存在技術脫節的可能,第一次面試騰訊的時候,面試官問我知道那些互聯網中間件技術等,當時是一無所知,后來的復習程序中又專門加了一個擴展知識環節,在這一塊學習的程序中,我主要學習了一些主流的互聯網中間件應用,比如mongodb、redis等等,雖說底層原理不知道,但是畢竟也能夠擴展知識面,再說,面試官知道你的了解程度后,也不會深入為難你,這一塊主要考察你對技術和行業的關注度,記得誰說過一句話,0和1的差距要大于1和100萬的差距,了解一下還是很有用處的,擴展知識我學習了《左手MongoDB,右手Redis : 從入門到商業實戰》這本書,按照書中的示例過了一遍,包括搭建開發環境、測驗用例等,學過一遍之后,基本上也就了解了其使用,這樣在面試的時候,也能夠簡單描述其功能,不至于聽不懂面試官在說什么,
以上就是我復習的六個方面,很多面試考察了資料庫的知識,包括B樹和B-樹、索引的實作以及優化等等,很多同學推薦《資料庫概論》、《Mysql必知必會》、《高性能 Mysql》這三本書,當時想了下,如果要搞這三本書,大概一個月左右,即便掌握了也很難精通,畢竟自畢業以后,作業中就沒有用過資料庫,所以關于資料庫的部分就沒有復習,實際的面試程序中,雖有面試官問資料庫,但了解到沒有用過之后,就沒有繼續追問下去,在面試程序中,學習到很重要一點就是揚長避短,不會就承認不會好了,畢竟每個人都會有知識盲區,大家都是人,但是千萬不要不會了還在那BB,所謂面試翻車,大概就是這么個場景,
騰訊的面試的流程持續一個多月,如下:
- 第一輪電話面試,技術面,
- 第二輪電話面試,技術面,
- 第三輪和第四輪現場筆試+面試,技術面(原定9月31號,國慶放假推遲一周),
- 第五輪現場復試,技術面,
- 第六輪HR面,
- offer call,
第一面流程:(70min)
晚八點半,電話面,開始專案介紹,技術難點、實作細節,大概說了20分鐘左右,不知道為啥我講的內容面試官似乎沒有理解,可能是專案架構比較復雜,口述不是特別形象,又聊了10分鐘,貌似雙方誰也沒說服誰,開始聊計算機網路、作業系統,內容包括TCP擁塞控制演算法、TCP和UDP區別、行程和執行緒區別等等,都是常規的題目,這一塊已經很好的復習過,沒問題,時間過去50分鐘,面試官總結說我網路協議這一塊不錯,原理和專案實戰比較強,會有下一面,
第二面流程:(大概20min)
距離上一面隔了六天,電話面,大概20分鐘左右,內容如下,不分先后:
Q1. 建構式可以是虛函式嗎?
A:不可以,原因有兩點:
- 構造物件的時候,必須知道物件的實際型別,而虛函式行為是在運行期間確定實際型別的,在構造物件的時,物件還沒有構造成功,編譯器無法知道物件的實際型別是該類本身還是其派生類,
- 虛函式的運行依賴于虛函式指標,而虛函式指標在建構式中行程初始化,讓它指向正確的虛函式表,而在物件構造期間,虛函式指標還未構造完成,
Q2. 網路位元組序是大端序還是小端序?
A:大端序,
Q3. Linux中如何創建行程以及創建行程后如何區分子行程?
A:使用fork()呼叫創建子行程,fork()呼叫回傳兩個值,大于0的表示父行程,等于0的表示子行程,
Q4. fork創建的子行程繼承了父行程哪些內容
A:子行程繼承了父行程的地址空間,打開的檔案描述符等,
Q5. fork創建的子行程繼承了父行程打開的檔案描述符,如何讓這種繼承不發生
A:可以在打開檔案的時候,設定FD_CLOSEXEC標志位,如果檔案描述符中這個標志位置位,那么呼叫exec時會自動關閉對應的檔案,
Q6. c++虛函式原理
A:虛函式是依賴于虛函式指標實作,每個擁有虛函式的類都有一個虛表,類的物件存在一個虛函式指標,指向實際型別的虛表,虛函式運行的時候,會根據虛函式指標找到正確的虛表,從而執行正確的虛函式,
Q7. c++多型的實作
A:多型分為兩種,一種是運行時的多型,一種是編譯時的多型,前者稱為動態系結,后者稱為靜態系結,動態系結時由虛函式來實作,靜態系結是由函式多載來實作,
Q8. c++ vector和list的區別?
A:vector是動態陣列,會動態進行分配記憶體,進行擴容操作,list是雙向鏈表,
Q9. 訪問vector的迭代器的時候可以刪減元素嗎?list呢
A:任何對vector的修改都將導致vector的迭代器失效,list因為是雙向鏈表,所以不會失效,
Q10. c++ vector的底層實作原理
A:vector底層是基于動態陣列實作,
Q11. c++ map的底層實作
A:map的底層實作是基于紅黑樹的,
Q12. 紅黑樹的特點以及常見的二叉平衡樹
A:紅黑樹性能比較高,插入洗掉時間復雜度保持在logn,和AVL相比,要求不是那么嚴格,它只要求到葉節點的最長路徑不超過最短路徑的兩倍,相比之下,AVL要求左右子樹相差高度不超過一,簡單的插入或者洗掉都會導致樹的不平衡需要旋轉操作,
(我只說這么多,后來的同學建議說下紅黑樹的五個特點)
Q13. c++空類的sizeof大小
A:c++空類的大小為1,如果含有虛函式的話,大小為指標的大小,32位系統指標大小是4,c++要求即使是空類,物件也要有存盤空間,含有虛函式的空類則是因為物件由虛函式指標,
Q14. 快速排序的時間復雜度
A:快速排序平均時間復雜度位nlogn,最差O(n^2)
Q15. nLogn是排序最好的時間復雜度嗎?
A:不是,還有O(n)的演算法,比如說基數排序,
Q16. 基數排序的原理以及應用
A:基數排序根據一個數的高低位進行排序,應用不知道,缺點是對負數的處理不太好,
Q17. 介紹負載均衡的應用
A:不知道,
Q18. http協議有用過嗎?
A:這個沒用過,
Q19. protobuf協議
A:我們公司之前使用的是json協議,沒有用過protobuf協議,
Q20. 資料庫
A:沒用過,
Q21. redis
A:這個是自己學習使用的,生產環境沒用過(這里說了下,我用它干嘛的,使用python的flask web框架基于redis的list結構開發一個網路聊天程式)
Q22. 解釋執行緒安全和可重入函式
A:這個是關于多執行緒訪問的嗎?可重入函式這個名詞聽過,但是忘記干啥了,面試官說pass.
(一個可重入函式被稱為可重入的,表明該函式被重入之后,不會產生任何不良后果,一個函式被重入,表示這個函式沒有執行完成,由于內部原因或外部原因呼叫,又一次進入該函式執行)
Q23. top的命令***和buffer區別
A:這個平常沒有關注過,(buffer是塊設備的讀寫緩沖區,比如磁盤,***是檔案系統的快取,常用于檔案)
Q24. 常見Linux命令是否用過,比如strace和netstat
A:這個有用過,strace用來跟蹤程式的執行,top查看記憶體,以及tcpdump等進行抓包等等,
Q25. 多個動態庫的連接順序有區別嗎,順序怎么排
A:有順序的,如果順序錯誤的話可能導致編譯失敗,這里的編譯順序應該是被依賴的庫放在后面,(這個我之前作業中遇到這個坑,所以知道,不過當時面試的時候,把順序忘了)
Q26. 智力題,100本書,兩個人輪流拿,每次拿1~5本,你先拿,有沒有啥策略可以保證你可以拿到最后一本?
A:這個得承認,智力題不是我的強項,每次遇到的話都要N天才思考明白( ̄_ ̄|||),當時考慮了大概30秒,想著100本這么多,要不先來10本試試,我一本,他一本,我一本.......掙扎了幾秒,老實承認,沒想到啥好方法,
(此題解法可以是先手拿4本,后續雙方每次拿6的倍數,這樣可以保證最終可以拿到最后一本),
第三面流程:
本來約的是9月31號,因為國慶的緣故,延到國慶后,現場面,下午2點來了之后,給了一張試卷,1.5小時完成,如果難度分成5個等級,感覺介于2和3之間,試卷內容保密,總之,考察比較基礎也比較全面,C++,作業系統,計算機網路,演算法和資料結構,
3點半,兩個面試官,對著簡歷介紹專案,細節,技術難點,架構設計等等,接下來考察軟體工程原理,這部分只給出題目,答案我都總結在文末給出的檔案里,題目不分先后,
1. Linux互斥鎖里面遞回鎖和非遞回鎖的使用方式,回傳值,
2. Golang Map是否是執行緒安全,如何設計一個無鎖保護的Map(可能答案是使用CAS),
3. 程式的地址空間分布,
4. 介紹Linux記憶體管理機制、涉及到的演算法,
5. 設計一個記憶體池,
6. 設計一個定時器
7. 解釋時間輪
8. Golang里面CGO原理
9. awk和sed是啥,咋用,
10. TCP粘包怎么解決,
11. 設計執行緒池,
12. Golang defer陳述句呼叫順序,
13. TIME_WAIT狀態有啥用,
14. 畫出四次揮手原理圖,
15. define和inline區別,
16. 定義常量指標和指標常量,
17. accept是在三次握手哪一次,
18. backlog作用,
閑聊,離職原因,離職幾個月這么長時間干啥去了,
第四面面試流程:(4小時)
大概是總監,
離職原因,離職幾個月了干啥去了,
拿著手機看我的博客里有一篇介紹memcpy的標準庫函式,讓我優化,當時覺得,靠,標準庫里的函式咋優化,能優化標準庫自己不就優化了,哪輪到我優化???但人家讓優化,肯定有優化空間,硬著頭皮上,對,就是下面這個函式,看了將近一分鐘,咋看都覺得這個函式很完美,覺得一個一個復制已經很好了,還能咋辦,問了下,能否給點提示,答曰,不急,慢慢來,又想了一會兒,還是沒啥思路,這時候,總監來了一句,“你不覺得一個一個復制有點慢嗎”,到了這時候,還是沒啥反應,不過既然嫌棄一個一個慢,那兩個兩個復制可以么?問了下兩個兩個復制算不算優化,答曰:算,于是想到使用一個short型別復制,后來總監看我有點思路,就提示我說,從匯編角度來優化,包括暫存器大小等等,然后,我使用long long型別來復制,即每次8個,手寫了實作,然后總監問我,如果地址不對齊咋辦?到這一步,當時沒想到地址對齊這個問題,沒有答上來,后來想了下,即使沒對齊,可以先一個一個復制等對齊了再每次復制8個,
當時對齊問題沒啥思路就pass了,感覺面試官水平很高,這道問題的水準也很高,關于優化以及編譯的問題,事后查了相關資料,這里推薦兩本書:《深入理解計算機系統》、《程式員的自我修養—鏈接、裝載與庫》,對于優化的原理、編譯器原理講解的非常好
void *memmove (void *dest, const void *src, size_t len)
{
char *d = dest; const char *s = src; if (d < s) while (len--) *d++ = *s++;
else {
char *lasts = s + (len-1); char *lastd = d + (len-1); while (len--) *lastd-- = *lasts--;
}
return dest; }
繼續做題,
N個M長度陣列求交集,求最優解并給出時間復雜度和空間復雜度,我給出的方案是歸并、去重、全排序,然后問了下為啥用歸并排序,于是介紹快排、歸并、堆排各自優缺點和使用場景,然后問有沒有更好的解法,想了下,給出了優化方案,仍然是歸并,去重,然后hash,然后過,應該有更好的解法,不過目前還沒想到,想到的同學教教我,
第三題,c++手寫單例模式,《劍指offer》第二題,
因為簡歷上有些會shell開發,然后給出第四題:
給定一個日志檔案,每行包括日期,IP地址,錯誤碼,然后讓我使用shell搜索指定日期,指定IP,指定錯誤的日志出現次數,簡單題,grep -rns "date + IP + error" | wc -l
看我的答案之后,在這個題目加了下擴展,除了前述三個內容,還有第四列content,每一行都不一樣,馬上給了答案:
awk -F"|" "print 112 $3" | grep -rns "date + IP + error" | wc -l,
應該是考察我awk的使用,這里提醒各位同學,自稱會shell開發一定要掌握awk和sed的使用,基本上,面試官看到自稱會shell必考,
四面就是這樣,
整個面試流程持續四個小時,出門已是18點,出門前,面試官告訴我回去等通知,一句話透心涼,覺得自己回答的還不錯,雖然稱不上卓越,
第五面流程:
距離三面和四面隔了7天,期間沒有任何訊息,以為涼了,結果來了電話,約復試,
復試的內容沒有特殊之處,依舊是基礎,內容如下:
1. 介紹前公司產品的功能、市場競爭力、自己負責的部分、產品的軟體架構,
簡要介紹下前公司的產品、功能、市場競爭力,雖然咱是搞技術的,但是關于產品市場的事情,平常作業中還是多多少少有所關注,此外,就是介紹產品的軟體架構圖,以及自己負責的模塊等等,很多同學遇到類似的問題,會說,自己只負責一個部分,不知道產品的整體架構,這樣回答,往往給人的感覺就是很水,搞技術的,不會可以,但是不會可以學啊,雖然,整體架構沒涉及過,但是,沒吃過豬肉不能沒見過豬跑,做了那么久,產品啥架構還不了解,這就有點說不過去了,所以,建議各位同學平常作業程序中,有空的話也從整體的角度思考下產品,萬一哪天需要自己搞呢,
2. 路由NAT如何實作,
這一塊沒有接觸過,畫了一個映射圖,大概描述了一下,
3. 考察結構體位元組對齊問題,
4. 概率題,兩個紅球一個白球,三個盒子,問第二個盒子至少一個紅球的概率,
考察概率論,剛開始拿到題,以為需要演算法,想了一會兒沒啥好方法,略顯尷尬的說,使用列舉吧,所謂暴力法,畫了一個多叉樹的圖,一目了然,事后想來,列舉才是最簡單的方法,
5. 編程題,字串去空格,
6. 行程、執行緒區別,為什么有了多執行緒還是用多行程,
基本的作業系統原理題,后面的問題只說了行程地址空間有限,不能創建任意多的執行緒,回來想了下,更好的回答應該是,行程是一個程式物體,多個程式需要多個行程,此外,行程地址空間相互隔離,安全,
7. 平時如何定位問題,core dump怎么產生的,
通常線上問題先復現、再定位,core dump怎么產生不知道,后來查了下,當程式有未處理的信號時,內核會自動生成core dump,能否生成core dump還有ulimit -c的限制,
8. 建構式呼叫虛函式可不可以,
不可以,說了下虛函式的作用以及建構式的呼叫順序,后面又問,如果呼叫會出現啥情況,因為不確定所以說不知道,回來測驗了下,是呼叫被調物件的自己的版本,
9. 演算法題:給定電話號碼加區號,如何快速查找對應地區,
區號占4位,給了長度10000的陣列做hash,O(1),問有沒有辦法提高空間利用率,沒想到,想到的同學告訴我,然后給了紅黑樹存盤,時間復雜度O(logN)太高,
10. 常用的IDE,
C語言使用source insight,Golang使用liteide,
11. 執行緒調度問題,
這里解釋了下兩種調度類以及它們的調度策略,然后是底層的實作原理,后來問調度程序的具體步驟,我記得內核的調度函式是schedule(),具體的操作沒有分析過,這里只說了大概,保存暫存器、背景關系,然后加載被調行程的背景關系、暫存器等等,
12. 不同編譯器編譯的庫能否混用,
沒用過,不知道,后來查了下,不同版本的編譯器編譯出來庫不能混用,不過網上的回答也沒有解釋清楚,覺得可能在問extern "C"問題,
13. 離職原因,離職這么久都干嘛去了,
14. 閱讀原始碼有啥好處?對以前的專案有沒有啥改進之處?
15. 有啥問題,
問了下直播業務涉及的終端以及后臺開發程序中使用到哪些中間件技術,然后,問了下騰訊的服務器內核啥樣子,回答說是定制的T-Linux內核,
整體感覺面試愉快,面試官也在考察知識深度,不會的也沒關系,
第六面(HR面)
距離復試三天時間,中午電話,
1. 為啥學些德語,
2. 第一份作業學習到啥,
3. 對騰訊怎么看,
4. 期望薪資以及依據,
5. 當前薪資、福利,
6. 以前是通信的,對互聯網怎么看,
7. 部門業務量很多,可能需要加班,你怎么看,
8. 有啥問題想問的,
兩天后,給了oc,
騰訊的面試流程大體這樣,技術面考察的都是基礎,要有深度,不能停留在表面,自己前前后后準備了四個月,從第一次的慘敗到后期的從容面對,一步步走下來,識訓滿滿,最終得到想要的結果,
以上的面試題部分答案我已經整理好啦,大家需要的掃描下方二維碼即可獲取哦,里面包含除了騰訊外以及其他廠的面試題以及答案匯總,我也把我學習的演算法視頻以及學習資料檔案免費的分享給大家,大家掃描下方二維碼獲取就好啦,記得添加的時候記得備注好資訊哦~~(下面是部分資料截圖)

資料獲取方式:
VX掃描免費獲取:
VX:psk12221

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/232492.html
標籤:其他
