滴滴面試(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分鐘就收到了滴滴的感謝信~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章