滴滴面試(09-20)
阿新 • • 發佈:2020-09-20
第一輪演算法題:每隔N個節點反轉單鏈表
void reverse(ListNode* pHead, int n){ if(pHead == nullptr) return ; // 先求出連結串列總長度 int len = 0; ListNode* pNode = pHead; while(pNode != nullptr){ pNode = pNode->next; len++; } // 分段反轉 int before = len / n; int after = len % n; vector<int> ans; for(int i = 1; i <= before; i++){ for(int j = 1; j <= n; j++){ ans.push_back(pNode->val); pNode = pNode->next; } for(int j = ans.size() - 1; j >= 0; j--) printf("%d", ans[j]); ans.clear(); } if(after > 0){ for(int i = 1; i <= after; i++){ ans.push_back(pNode->val); pNode = pNode->next; } for(int i = ans.size() - 1; i >= 0; i--) printf("%d", ans[i]); } }
第二輪演算法題:順時針90°旋轉陣列(沒做出來,但這個題太印象了,大家得背下來)
int main() { int rows = 4; int cols = 4; int a[rows][cols]={{1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7}}; int b[rows][cols]; for(int i = 0; i < rows; i++) { for(int j = 0; j < cols; j++) { //b[i][j]=a[rows - 1 - j][i]; //順時針旋轉90度,核心演算法 b[i][j] = a[rows - 1- i][rows - 1- j]; //順時針旋轉180度,核心演算法 //b[i][j]=a[j][rows - 1-i]; //順時針旋轉270度,核心演算法 } } for(int i = 0; i < rows; i++) { for(int j = 0 ; j < cols; j++) { printf("%d", a[i][j]); } printf("\n"); } printf("\n"); for(int i = 0; i < rows; i++) { for(int j = 0 ; j < cols; j++) { printf("%d",b[i][j]); } printf("\n"); } return 0; }
第一輪面試是一個帥氣的小哥哥,問的問題都還挺簡單,演算法題也比較容易
第二輪面試官一看就是一個大佬,指著我的專案問,一直問我的Linux任務是怎麼排程的,是怎麼去判斷我的任務有沒有被出觸發的,然後一直問我的Redis優化,專案優化,我勒個去。。。這種題我就沒資格答......可能覺得我太菜了,最後給我出了個簡單的演算法題,但是我簡單的演算法題也沒做出來哈哈哈哈哈~
果不其然,面試結束後10分鐘就收到了滴滴的感謝信~