欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++面试总结

程序员文章站 2022-03-07 22:49:37
...

2021 C++面试题

1、虚函数的底层实现原理
2、sizeof结构体对齐
3、static静态变量
4、CretateThread和_beginthreadex区别
5、new和malloc区别,什么样情况选择new?什么情况下选择malloc
6、VS中编译器MT /MD的区别?
7、动态库和静态库的区别?
8、文件系统概念知识
9、VS远程调试代码
10、数据库优化
11、线程同步
12、进程同步
13、互斥锁和临界区的区别?
14、为什么文件映射比传统的write、Read速度快?
15、windebug使用情况
16、map unordered_map的底层实现原理
17、应用程序调用dll的时候,为什么遵循内存谁申请、谁释放的原则?
18、C++ 11新属性,右值引用、转换、完美语义
19、vector 和list的区别使用场景
(1-100万的数据只遍历使用 选用list)
20、Qt中 QGraphicsView框架选中原因?
(图元操作的基本事件都有,能支持单层图元的刷新(widget整个界面都要刷新))
21、model\View的用法使用场景

算法题
1、链表反转

template <typename T>
typedef struct ListNode
{
   T data;
   struct ListNode* next;
}
void Reverse(ListNode** pList)
{
  ListNode* pre = *pList;
  ListNode* pcur = nullptr;
  ListNode* pTemp = nullptr;
  while(pre){
     pTemp = pre->next;
     pre->next = pcur;
     pcur = pre;
     pre = pTemp;
  }
  (*pList)->next = nullptr;
  *pList = cur;
}

2、删除链表中重复的节点

ListNode* RemoveDupNode(ListNode* L)
{
  ListNode* p = nullptr;
  ListNode* q = nullptr;
  ListNode* r = nullptr;
  p = L->next;
  while(p){   //遍历链表
     q = p;
     while(q->next){  //q遍历p后面的节点,并与p数值比较
         if(q->next->data == p->data){
            r = q->next;   //r保存需要删掉的节点
            q->next = r->next; //需要删掉的节点的前后节点相连
         }
         else
         {
            q = q->next;
         }
     }
     p = p->next; 
  }
  return L;
}

3、二叉树反转

template <typename T>
typedef struct TreeNode
{
    T data;
    struct TreeNode* left;
    struct TreeNode* right;
};

//方式1 递归实现
TreeNode* InvertTree(TreeNode* root)
{
   if(root){
     InvertTree(root->left);
     InvertTree(root->right);
     std::swap(root->left, root->right);
   }
   return root;
}
//方法2 借助数据结构栈实现
TreeNode* InvertTree(TreeNode* root)
{
   std::stack<TreeNode*>stk;
   stk.push(root);
   while(!stk.empty()){
      TreeNode* p = stk.top();
      stk.pop();
      if(p){
          stk.push(p->left);
          stk.push(p->right);
          std::swap(p->left, p->right);
      }
   }
   return root;
}


相关标签: C++ c++