1. 程式人生 > >[心得]網際網路公司招聘要求中的技術整理

[心得]網際網路公司招聘要求中的技術整理

身在網際網路類公司,對於網際網路公司的技術要求比較清楚。為造福想進網際網路行業的小弟小妹們,特整理出來。

軟體測試
分知識密集型和勞動密集型。
像一些app的測試,黑盒測試,寫白盒測例,跟蹤缺陷一般屬於勞動密集型
知識背景主要是Android/iOS手機系統使用經驗,linux系統

測試開發
要動手做點測試工具,稍微進階一點。
要動手搭建完善持續整合持續交付流程(Jenkins,Jira,Git),會Python
熟悉各種自動化測試工具

Web前端
JavaScript,Node,Linux系統,資料結構,演算法,HTTP

運維開發
ansible規範部署
centos系統管理
儲存資料庫管理
YARN/HDFS/Hive/Pig/Oozie/Spark/Druid
對Hadoop有了解

大資料統計
熟悉若干技術:hadoop、hive、hbase、MapReduce、flume-ng、kafka、spark
掌握Java多執行緒和網路程式設計
運用機器學習、資料探勘技術處理海量資料,分析與挖掘潛在規律和關聯,認識、建模並解決實際問題,包括搜尋相關性、點選率、改善使用者體驗等
有hadoop等分散式系統程式設計經驗,這裡處理的都是大資料
實時/離線(Storm、Flink、Hadoop、Spark)大資料計算處理經驗;

業務開發
熟練使用C/C++ 語言進行開發,有高效、高可靠程式碼開發經驗
熟悉常見的資料結構和演算法
有實時服務端系統開發經驗。
熟練掌握web後臺相關技術,如: jetty、mysql、spring、mybatis等。
熟悉redis、rpc、訊息佇列、zookeeper、storm等常用開源元件或技術的應用。
有兩年以上的Java/C++經驗,熟悉多執行緒程式設計,記憶體管理,設計模式,具有良好的編
程習慣;
熟練掌握主流應用伺服器架構體系、資料庫以及各種中介軟體技術,如Tomcat、Radis、
memcahced、Hbase、Mysql、ActiveMQ等;
具有大型系統的技術架構/應用架構/資料架構的的研發經驗,網際網路高併發大系統設計
與研發經驗,具備良好的系統分析、構建能力;
具備搜尋引擎或推薦系統開發經驗,熟悉搜尋引擎體系架構;

資料爬蟲
文字挖掘/文字分析/語義理解
NLP/機器學習理論和技術基礎
熟練掌握c/c++、python/perl/shell等語言程式設計、及資料結構基礎演算法
有自然語言處理系統或資料探勘或搜尋引擎開發經驗
分詞、文字分類、非結構化文字提取、語義分析、語義表示、語義匹配、組塊分析、主題模型、篇章分析的某個部分有深入研究。
有億級別以上文字挖掘經驗。

推薦演算法
先進、適用的解決方案
使用者建模和挖掘,提升個性化推薦的效果
紮實的推薦演算法/機器學習/資料探勘/NLP理論和技術基礎
熟悉C/C++、JAVA、python等開發語言,程式設計能力紮實
熟練掌握Linux平臺開發和常用資料庫(MySql、postgreSQL)
有內容推薦系統或搜尋引擎或廣告系統開發經驗
熟悉分散式系統的設計和應用,熟悉分散式、快取、訊息等機制
良好的數學功底和建模能力,理解資料探勘,機器學習領域的常見演算法,包括迴歸、決策樹、SVM、樸素貝葉斯、k-means等,以及常用演算法的適用場景、優點、缺點以及彌補辦法
熟悉常用的資料探勘和推薦演算法,如關聯規則挖掘、協同過濾等,有推薦系統開發經驗者優先。
UserCF是某個群體內的物品熱門程度
ItemCF是反應本人的興趣愛好,更加個性化
熟練運用分類、迴歸、排序等模型解決相關問題,有分散式系統理論基礎和實踐經驗,熟悉Map-Reduce/BSP/實時計算等分散式計算技術

LDA通常有兩種解釋,分別是隱含狄利克雷分佈(Latent Dirichlet Allocation)和線性判別分析(Linear Discriminant Analysis)。關於線性鑑別分析的研究應追溯到Fisher在1936年發表的經典論文(Fisher R A. The use of multiple measurements in taxonomic problems),其基本思想是選擇使得Fisher準則函式達到極值的向量作為最佳投影方向,從而使得樣本在該方向上投影后,達到最大的類間離散度和最小的類內離散度。在Fisher思想的基礎上,Wilks和Duda分別提出了鑑別向量集的概念,即尋找一組鑑別向量構成子空間,以原始樣本在該子空間內的投影向量作為鑑別特徵用於識別。實際應用中存在著大量的典型的小樣本問題,比如在人臉影象識別問題中,類內散佈矩陣經常是奇異的。這是因為待識別的影象向量的維數一般較高,而在實際問題中難以找到或根本不可能找到足夠多的訓練樣本來保證類內散佈矩陣的可逆性。因此,在小樣本情況下,如何抽取Fisher最優鑑別特徵成為一個公認的難題。

Google2013年開源了一款深度學習工具word2vec。word2vec技術基於神經網路模型,可以簡單地將神經網路模型分為三層,分別為輸入層、隱含層和輸出層。
瞭解開源搜尋或自然語言處理專案,如Lucene,Solr,openNLP,Gensim,Mahout
學scala程式設計對於推薦演算法不是最優先的。
紮實掌握常用機器學習、概率統計和最優化演算法、自然語言處理、模式識別技術
具有文字分類、內容識別、使用者畫像等相關演算法經驗
具有大規模文字、視訊、商品推薦系統實踐經驗
有深度學習(MXNET、TensorFlow等)經驗
有搜尋、競價廣告等工作經驗

商業廣告
有模型方向、廣告相關性方向、機制方向、廣告主策略方向
提高線上廣告的相關度、使用者體驗、投放效果及變現能力

搜尋
移動搜尋、垂直搜尋、推薦系統的演算法開發,在自然語言處理、網頁分析、排序模型、離線特徵計算、搜尋日誌挖掘、垂直搜尋、推薦系統
搜尋自然語言處理的研發,包括海量資料探勘、實體和實體關係抽取、n-gram分析、新詞發現、熱點發現、分詞、句法分析、同義詞、糾錯等、知識庫建設
網頁解析、網頁分類、資訊抽取,與排序相關的網頁分析的離線特徵的計算與改進

大資料人工智慧
基於CUDA的分散式深度學習系統
統計機器學習(如深度神經網路、Boosting、圖模型、概率統計、最優化方法等)
熟悉大規模平行計算的基本原理並具有實現平行計算演算法的基本能力
具備紮實的統計學、自然語言處理、資料探勘、機器學習、資訊檢索等相關領域的理論基礎,並且在某個方向上有深入的研究和積累

關於thrift技術
Thrift是跨語言的RPC框架,現在是一個Apache的頂級專案。Thrift通過一箇中間語言–IDL介面定義語言,來定義RPC的介面和資料型別。使用Thrift的程式碼生成工具(thrift-0.9.1.exe編譯器)讀取IDL檔案,生成不同語言的服務端與客戶端程式碼,並由生成的程式碼負責RPC協議層和傳輸層的實現。目前支援語言C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk
類似的技術還有google開源的protobuf。

不錯的技術描述
1. 長期使用JAVA及開源框架進行專案開發,並有一定得專案管理經驗
2. 擅長使用開源框架,在某個領域內對開源框架,解讀過部分或者全部原始碼,掌握實現原理。
3. 研究 http 協議、搜尋引擎、快取、jvm 調優、序列化、nio、RPC 呼叫框架等,並且有相關實踐經驗
4. 精通 MySQL 應用開發,熟悉資料庫原理和常用效能優化技術,以及 NoSQL,Queue 的原理、使用場景以及限制
5. 參與過大型複雜分散式網際網路 WEB 系統的設計開發者優先,擁有和工作年限相稱的廣度和(或)深度。
6. 經常混跡各種開源社群、關注各種技術部落格,有個人blog或者github
7. 擅長演算法和建模,參加過ACM並獲取一定成績的。

形容java技術純熟:
Java基礎紮實,理解io、泛型、多執行緒、集合等Java基礎使用和部分實現原理,對JVM原理有一定的瞭解;熟悉面向物件設計開發;
對於用過的開源框架,能瞭解到它的原理和機制;