0824字节后端面试

  1. C++智能指针
    答案:点击链接
  2. move()函数
  3. 深拷贝浅拷贝
  4. 左值和右值的区别
  5. C++线程,线程框架pthread,线程同步,线程安全
  6. TIME_WAIT和CLOSE_WAIT状态区别,这两个状态哪一个会泄漏
  7. 避免死锁的算法
  8. 编程题:删除单链表中的一个节点,要求时间复杂度为O(1)。参考:点击链接
    基本思想:将当前节点的后一个节点的值替换当前节点的值,将当前节点的下一个节点指向后一个节点的后一个节点。
    注意:当删除节点是最后一个节点的情况,需要遍历链表,然后找到最后一个节点的前驱。
struct ListNode{
	int val;
	ListNode *next;
};
void deleteNode(ListNode *head, ListNode *pd){
	if(head == NULL || pd == NULL)
		return;

	if(pd->next != NULL){//删除的节点是中间节点
		p->val = p->next->val;
		p->next = p->next->next;
	}
	else if(head == pd){
		head = NULL;
		pd = NULL;
	}
	else{
	
		ListNode *p = head;
		while(p->next != pd){
			p = p->next;
		}
		p->next = NULL;
		pd = NULL;
	}
}

你可能感兴趣的:(0824字节后端面试)