1. 程式人生 > >『騰訊後臺開發』實習生技能要求

『騰訊後臺開發』實習生技能要求

一、作業系統方面

1. 多執行緒相關與執行緒之間同步技術

熟練使用(但不侷限於)以下linux API

linux下的執行緒建立、等待、獲取執行緒id

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
int pthread_join(pthread_t thread, void **retval);
pthread_t pthread_self(void);

常見執行緒之間的同步技術(何時該用那種技術)

互斥體

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);  
int pthread_mutex_destroy(pthread_mutex_t *mutex);  
int pthread_mutex_lock(pthread_mutex_t *mutex);  
int pthread_mutex_trylock(pthread_mutex_t *mutex);  
int pthread_mutex_unlock(pthread_mutex_t *mutex); 

訊號量

int sem_init(sem_t *sem, int pshared, unsigned int value);
int sem_destroy(sem_t *sem);

int sem_wait(sem_t *sem); 
int sem_post(sem_t *sem);

int sem_getvalue(sem_t *sem, int *valp);

條件變數

int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr);
int pthread_cond_destroy(pthread_cond_t *cond);

int pthread_cond_signal(pthread_cond_t *cond);
int pthread_cond_broadcast(pthread_cond_t *cond);

int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex);
int pthread_cond_timedwait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex, const struct timespec *restrict abstime);

讀寫/自旋鎖

int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr);
int pthread_rwlock_destroy(pthread_rwlock_t *rwlock);

int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);
int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock);

int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);
int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock);

int pthread_rwlock_unlock(pthread_rwlock_t *rwlock);
//這兩個函式在Linux和Mac的man文件裡都沒有,新版的pthread.h裡面也沒有,舊版的能找到
int pthread_rwlock_timedrdlock_np(pthread_rwlock_t *rwlock, const struct timespec *deltatime);  
int pthread_rwlock_timedwrlock_np(pthread_rwlock_t *rwlock, const struct timespec *deltatime); 
int pthread_spin_init (__pthread_spinlock_t *__lock, int __pshared);
int pthread_spin_destroy (__pthread_spinlock_t *__lock);
int pthread_spin_trylock (__pthread_spinlock_t *__lock);
int pthread_spin_unlock (__pthread_spinlock_t *__lock);
int pthread_spin_lock (__pthread_spinlock_t *__lock);

守護程序的建立、原理

計劃作業crontab

程序、執行緒狀態檢視命令(top、strace、pstack)

記憶體狀態檢視命令memstat、free

IO狀態檢視命令iostat、df、du

瞭解linux檔案的許可權、使用者、時間(ctime、mtime、atime)、inode等檔案基本屬性,熟練使用chmod、chown、chgrp等基本命令。

熟悉檔案傳輸命令scp、rz、sz命令、

熟悉檔案定位命令find、whereis命令。

熟悉lsof命令。

二、網路

熟悉tcp狀態機(三次握手、四次揮手)。

熟悉tcpdump命令。

熟悉網路狀態和防火牆狀態檢視命令:netstat、ifconfig、iptables

熟悉socket API,包括但不限於(connect、accept、bind、listen、send/sendto、recv/recvfrom、select、gethostbyname)

int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

int bind(int socket, const struct sockaddr *address, socklen_t address_len);
int listen(int sockfd, int backlog);

ssize_t send(int sockfd, const void *buf, size_t len, int flags);
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);

ssize_t recv(int sockfd, void *buf, size_t len, int flags);
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);

int select(int nfds, fd_set *readfds, fd_set *writefds,
                  fd_set *exceptfds, struct timeval *timeout);

void FD_CLR(int fd, fd_set *set);
int  FD_ISSET(int fd, fd_set *set);
void FD_SET(int fd, fd_set *set);
void FD_ZERO(fd_set *set);

struct hostent *gethostbyname(const char *name);

熟悉epoll。

int epoll_create(int size);
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);

阻塞socket和非阻塞socket在connect、send、recv等行為上的區別,如何將socket設定為非阻塞的。

三、指令碼工具

Shell基本語法、變數操作、函式、迴圈/條件判斷等程式結構。

熟練使用文字編輯工具vi/vim。

熟練使用文字處理命令grep、sed、cut。

awk

四、資料庫

熟悉資料表結構設計(三正規化、欄位屬性)。

查詢優化(索引、sql優化)。

熟悉常見的mysql API函式:

mysql_real_connect

mysql_select_db

mysql_query

mysql_store_result

mysql_free_result

mysql_num_rows

mysql_close

mysql_errno

五、程式語言

C/C++方面

熟悉記憶體分佈(堆、棧、靜態/全域性/區域性變數、虛指標...)

熟悉Makefile。

熟悉gdb除錯(斷點、檢視記憶體、執行跟蹤、瞭解CPU主要暫存器作用...)。

熟悉效能分析工具(gprof)。

熟悉C-Runtime常用函式(如字串格式化函式printf、scanf,字串比較連線函式、記憶體分配函式、檔案與目錄操作函式等)。

熟悉stl庫。

熟悉OO思想、常見設計模式(如單例模式、工廠設計模式、裝飾者模式、Builder模式、生產者消費者模式、策略模式等)。

熟悉RAII、pimpl慣用法。

有一定的程式碼質量和重構能力。

以上內容由一位好心的騰訊後臺開發的面試官提供,在此表示感謝,作者稍微整理了一下,希望對大家有所幫助。

歡迎關注公眾號『easyserverdev』。如果有任何技術或者職業方面的問題需要我提供幫助,可通過這個公眾號與我取得聯絡,此公眾號不僅分享高效能伺服器開發經驗和故事,同時也免費為廣大技術朋友提供技術答疑和職業解惑,您有任何問題都可以在微信公眾號直接留言,我會盡快回復您。

相關推薦

後臺開發實習生技能要求

一、作業系統方面 1. 多執行緒相關與執行緒之間同步技術 熟練使用(但不侷限於)以下linux API linux下的執行緒建立、等待、獲取執行緒id int pthread_create(pthread_t *thread, const pthread_attr_t

[2017/06/02]後臺開發實習生面試總結

————————–6月2號更—————————– 現在才被面試,都是因為自己zz。。四月份網申的時候寫的遠端面試,忘了改面試地點,於是成功GG錯過面試。誰知五月份的時候超凡學長突然告訴我鵝廠有實習生補招,要了我最新的簡歷。本來覺得沒什麼希望,結果前幾天突然收到

後臺開發實習生1面+2面

本來以為一面就掛了,然後懶得寫面經了;後來收到了二面通知,雖然也掛了,但是還是總結一波吧!! #######筆試 筆試的題目由選擇題+2道問答題+2道程式設計題組成; 選擇題主要還是圍繞後臺開發的一些

後臺開發社招記錄(電話面試)

天吶,我又進行了騰訊電話面試,真的是一個面試官一個風格呀,和之前的面試官相比,覺得之前面試官太好了,問的問題很簡單,很少,最起碼電面通過還給了我去現場面試的機會,而且是在毫無準備的狀況下的,這次從上週五到週一,又從週一到今天,週末還準備了下,而今天的面試官估計不會再給我機會了,涼涼呀。。。。 上次面試15分

2018年後臺開發技術崗社招面經-順利拿到offer

       公眾號:內推派,歡迎大家一起學習交流。作者從事後臺web伺服器開發,主要在linux上使用C語言程式設計。畢業後在公司負責CDN快取元件開發,2.5年工作經驗。文章介紹了在騰訊面試過程和心得,希望對相關工作的小夥伴有所幫助,大家一起學習進步。本文主要分以下3個部

後臺開發面試題及答案

簡單歸納:fd只是一個整數,在open時產生。起到一個索引的作用,程序通過PCB中的檔案描述符表找到該fd所指向的檔案指標filp。 檔案描述符的操作(如: open)返回的是一個檔案描述符,核心會在每個程序空間中維護一個檔案描述符表, 所有開啟的檔案都將通過此表中的檔案描

後臺開發面試記錄

AI崗的競爭實在是太激烈了,想轉開發,中午投了騰訊沒想到這麼快就筆試+面試……自己完全沒有準備好,痛定思痛,就從這次記錄開始。 筆試部分: 1、實現C++中的memcpy函式 2、兩個有序的單鏈表,將它們合併 3、一個雙鏈表,實現刪除功能 4、有編號1

後臺開發面試總結,原創,吐血推薦!!

前段時間專心面過騰訊,經過了N輪的技術面,結果還是掛了,但沒掛在技術面,比較欣慰,回來之後寫一點總結,以供有夢想進入騰訊做後臺伺服器開發的同學參考,本文章為胡成精心總結,胡成原創,copy和轉載請通知。ps:()之內的文字由作者點評,非面試題文字。 Linux和os:

面經筆記+來自後臺開發內推2019

執行緒裡面有什麼是獨立的? 程序包含程式碼資料檔案,這個是程序內的所有執行緒共享,但是執行緒有自己的執行緒ID、程式計數器、暫存器和棧獨立的資源。 一個程序一定要有一個執行緒嗎?沒有執行緒的程序是什麼? 協程是什麼? 協程是線上程之上由“使用者”

後臺開發面經+答案

C++: 1 :C++多型的實現方式,虛擬函式的底層實現細節。 2:繼承類呼叫建構函式順序和解構函式順序,什麼時候要將 解構函式定義為虛擬函式。 3:引用與指標區別 4:new 與 malloc的異同處。 5:結構體記憶體對齊方式。 演算法與資料結構: 1:給一個正整數n,

有n根長度不同的木棒,隨意選取三根湊一個合法的三角形,求總拼湊方案的數量(2018軟體開發-後臺開發方向秋招補考試題第三題)

題目: 有n根長度不同的木棒,隨意選取三根湊一個合法的三角形,求總拼湊方案的數量。對於兩個方案,只要有一根木棒的長度不同,則視為不同拼湊方案。 輸入描述 第一行為正數t(0 <= t <= 10),表示測試用例數 接下來每兩行一個測試資料,第一行一個整數n

2019年8月面試前端開發實習生記錄

  昨天在BOSS直聘三投了騰訊燈塔專案的前端開發實習生崗位,通過簡歷後第二天就安排電話面試了,起先以為是人事面,沒想到直接是技術面,有點意外,準備的不是很充分,可以說整個過程都有點懵哈哈哈。 然後面試小哥根據那邊的崗位技術需求和我這邊簡歷上寫的技術棧問了一系列問題(努力記起),我做記錄如下。這次面

2017年暑期實習生編程題【有趣的數字】Python

空間 style 最大 ... lse utf-8 tor 問題 spl 有趣的數字 時間限制:1秒 空間限制:32768K 題目描述: 小Q今天在上廁所時想到了這個問題:有n個數,兩兩組成二元組,差最小的有多少對呢?差最大呢? 輸入描述: 輸入包含多組測試數據

面試-開發測試職位

下回 返回 意見 效率 true 成了 保持 寫代碼 adc 水木論壇上逛work版看到一個騰訊的內推鏈接,跟我司之前一個開發了簡歷內推系統的員工有的一拼,挺有經濟頭腦。我就註冊了投個了簡歷過去。很快就收到短信通知發起了崗位的評估流程,如果簡歷合適則在7個工作日內安排面試。

後臺

                        &nb

後臺面試過程

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

python面試之測試開發工程師

今天面試了騰訊的測試開發工程師崗位,總體感覺一般,問的問題都還是比較基礎性的東西,當然也問了很多實習期間做的專案,各佔一半吧。下面基礎部分的東西總結一下: 1、假定我有100M的一個文字資料,但是我的電腦記憶體只有10M,我怎麼在有限的資源條件的情況下,找出這個文字中出現次數最多的那一行字串

Java開發5面面經:Treemap+同步鎖+MVCC+快取+慢查詢+雪崩

  一面(電話) 說說對JVM的理解 treemap和hashmap有什麼區別? Java多執行緒的的5大狀態圖流轉 mysql主鍵和唯一索引的區別 說說最近的專案 如何實現session共享,用redis如何實現 快取擊穿的概念和解

PHP開發規範v1.0

1引言 1.1定義及縮略語 縮略詞 說明 海豹平臺 運維中心提供的研發平臺,提供框架、公共基礎元件、公共業務元件加速業務的日常研發工作 1.2參考文件 海豹平臺WIKI:http://wiki.seals.webdev.com/ 1.3目的 本規範由程式設計原則組成,融合並提煉了開發人員長時

2017校招實習生面試總結 實習生面試經驗 (已拿offer)

從三月份開始,就投入了緊張的校招實習生準備當中。因為自己深知這次機會的重要性以及必要性。一開始,只鎖定了騰訊和阿里的內推。三月初,在支付寶師兄的幫助下,成功獲得內推資格。師兄給了很多建議,支付寶可能更喜歡問架構、設計以及思考相關的問題。實際上,這樣開放性的考綱更難去複習。因為