金山WPS C++面经

1.Base类有test方法,Base的不同对象调用test方法,内部是怎样的呢?(我答的指向同一个预先分配好的地方)

2.有一个AnotherBase类(与Base无关系)里面也有一个test方法,用其强制转换Base的对象,再调用这个对象的test方法,请问调用的是哪个类的方法?
3.在方法func()后面加const意味着什么?
4.给一个六面骰子,如何做出一个1~10的等概率随机方法?
5.用过什么设计模式?

  • C 和 C++ 的区别
  • new 和 malloc的区别
  • 对虚函数的理解
  • 多线程的理解(多线程同步的途径)
  • 多进程(继承什么, 不继承什么)
  • 进程间通信
  • gdb的使用, 编译器的使用
  • MySQL 查询前 100 条数据, 以及如何分组
  • 常见的Linux的命令
  • TCP和UDP的区别
  • socket的流程
  • 五种IO模型
  • linux基本操作
    • 拷贝文件 、查看ip、vim的基本操作(查找字符串、替换字符串)、gdb的调试;
    • 查看硬盘大小等等操作
    • 总结需要详细的看看linux的基本操作命令等(这部分很尴尬都不会)
  • STL
    • vector与list的区别
      • 怎么查找倒数第二位数字;
      • 二者的区别;
    • map怎么插入数据 有几种方式
      • 每种方式的优缺点;
  • 多线程多进程
    • 线程间同步的方式 :我答了 信号量、互斥量;问我还有没有 我说我记得就这几个了
    • 然后问我进程间同步的方式 答了一个临界区 ;忘了信号量和互斥量和事件了;
    • 然后我自己抢答了 进程间通信的方式:说了之后然后问我几个问题
      • 怎么创建管道 pipe()
      • 怎么创建共享内存shmget();
        1.自我介绍
        2.用过linux系统吗,哪种linux系统,版本呢?
        3.linux基本命令。怎么查看IP;怎么给文件改名;怎么查看文件的权限;修改权限;怎么加执行权限;怎么查看当前系统的版本;怎么查看当前系统硬盘空间的总量与使用情况;怎么查看系统内存多少;怎么查看某个命令执行的时候需要链接哪些系统库;怎么给一个文件做一个软链接;说一下gdb;怎么把一个test.cpp编译成一个test.so;
        4.vector与list的区别
        5.怎么找某vector或者list的倒数第二个元素
        6.说一下map和set的区别
        7.红黑树的原理
        8.map怎么插入数据,有几种方式
        9.c++11在原来的版本上都加了哪些东西。
        10.智能指针,三种指针都介绍一下其特性,作用。
        11.进程怎么同步,线程怎么同步,要说全。
        12.tcp与udp的区别,udp怎么实现多对多通信,问的很细,包括tcp的各种机制。
        13.说一下快排
        14.QT的信号槽是什么原理。

        C++基础

        • 自我介绍
        • 平时有用C++写过项目吗?(这里没让我展开说项目)
        • 对C++的特性有什么了解
        • 对封装、继承、多态的具体理解
        • public/protected/private的区别
        • 说一下三种方式继承对基类的访问权限
        • 说说构造函数的执行顺序,析构函数呢
        • 说一下构造函数内部干了什么
        • 如何实现多态
        • 构造函数和析构函数可以调用虚函数吗,为什么
        • 析构函数一定要是虚函数吗,为什么
        • 怎么理解C++的面向对象和C的面向过程
        • 可以介绍一下new的实现原理吗
        • new和malloc的异同处
        • C++怎么为各种变量分配内存空间的
        • 引用了解吧,介绍一下
        • 拷贝构造函数内部做了什么,什么时候需要重写
        • 初始化列表了解吗(以为是那个C11特性,没敢说)
        • 平时用什么编程环境(Windows+MFC+Qt)
        • 用过Qt是吧,说一下信号和槽的机制,绑定的方式
        • 你觉得MFC和QT比各自有什么优缺点
        • MFC的消息机制和Qt消息机制的对比

        进程线程相关

        • 了解过线程吗,谈一下进程和线程的联系和区别吧
        • 对于共享的区域多个进程或线程一起访问会不会出问题,要怎么解决(同步和互斥)
        • 进程通信有哪几种方式,介绍一下

        网络(项目里有)

        • Socket的流程是什么样的(服务端和客户端两个)
        • 项目里用的什么协议(TCP)
        • TCP和UDP的区别,优缺点

        数据库

        • 你这项目的数据库自己设计的吗,简单介绍一下你的设计流程
        • 了解数据库范式吗,介绍一下
        • 用过索引是吧,说一下索引的优缺点,选取条件
        • 数据库里多对多关系怎么处理设计

        数据结构

        • 说说vector和list的不同,优缺点
        • 平衡二叉树了解吗,说说它的特点,时间复杂度(logN)
        • 说说二叉树的三种遍历(想让我写来着,没带纸笔,口述了算法思想和区别,递归和非递归)
        • 图了解吗,说一说它的遍历(广度和深度)

        回到C++

        • 说说宏定义和const的区别
        • 宏定义和内联函数的区别
        • 内联函数的作用,和普通函数有什么区别
        • C++有几种转换方法,简单介绍一下
        • 重载是什么,和重写有什么区别

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注