cat writebug.cn/history

一个开发者的技术博客。

面试中我经常问的问题

C++

  1. 说说C++的类型转换和使用场景。
  2. 什么是抽象类。怎么定义。
  3. 说说C++的新特性。
  4. C 和 C++ struct区别?
  5. volatile作用, 是否具有原子性?
  6. 如何禁止一个类被实例化?
  7. 说说编译过程又源代码到可执行文件经过了哪些步骤?

Qt

  1. 创建对象传递的parent指针是什么作用?
  2. QWidget 和Qt Quick (qml)区别,底层是否一样?
  3. Qt moc的作用?
  4. Qt 是否支持反射,是如何实现的?
  5. Qt 中一般不用阻塞IO模型, 因为长时间阻塞会导致界面失去响应。例如,使用阻塞模型不能兼顾网络操作和UI界面响应。你知道在Qt里面是如何解决多路IO需要同时处理问题的吗?
  6. Qt 框架本身如何实现跨平台. (qpa
  7. 正在运行的QThread中如何发送数据给Qt主线程. 如果使用信号和槽如何保证槽函数在主线程中执行? (postEvent

数据结构

  1. 你知道哪些数据结构?什么数据结构适合什么场景?你用过哪些?
  2. 单链表和双链表有什么区别,头节点是什么作用?如果想要快速从结尾添加删除元素,使用什么链表?
  3. 排序大量数据,可以选择什么排序算法?
  4. 外排序是怎样做的?
  5. 有大量数据,求最大的10%如何实现?
  6. 如果要实现一个矢量画图程序, 能够画很多形状和线段绘制文字, 设置边框颜色填充颜色等. 支持选中画布上的图形修改属性比如颜色等, 同时要有层级, 每个图形可以放在其他图形上面, 支持向上移动一层, 向下移动一层. 从软件架构和数据结构上考虑如何实现? 如果你带一个团队, 考虑怎么分配工作? 如何实现撤销功能? 如何实现序列号和反序列化?

操作系统编程接口

  1. 进程间通信方式有哪几种
  2. 说说线程同步的方式
  3. 信号和信号量有什么区别
  4. 条件变量是干什么用的
  5. 介绍下常见的io模型
  6. 当接触比较大的项目, 比如有几十万行, 你打算如何读懂项目代码?
  7. gdb如何调试多线程, 你用什么调试工具?

linux

  1. 文件权限有哪些?除了读写可执行,还有其他权限吗?
  2. 读写执行权限对于目录的意义是什么?
  3. 你知道哪些文件系统?每个文件系统特点是什么?
  4. 统计目录大小, 统计磁盘使用/剩余空间?
  5. 如何查询系统开了哪些端口? 查询指定端口被哪个进程占用?
  6. 说说系统启动过程,从机器上电开始。
  7. 你最常用的是什么系统,如果安装三方软件之后报错缺少动态库 xxx.so, 你是怎么解决的。
  8. 服务器上的某个服务异常,考虑怎么排查?(网络,系统资源占用,查看进程,日志,gdb

网络

  1. ping命令所使用的协议是什么?
  2. 路由跟踪工作原理是什么?
  3. 交换机和路由器区别是什么, 工作原理分别是什么?
  4. 什么是ARP协议,DHCP协议,DNS协议?
  5. DNS递归查询和迭代查询分别是什么?除了A记录还见过哪些记录? CNAME是干什么的?
  6. 使用UDP传输数据时候,为了更好的传输性能,一般UDP包最大发送多少字节合适,为什么?

编程题

  1. 给一个字符串,统计单词个数。
  2. 求斐波那契数列第N项。
  3. 单链表逆序。
  4. 格式化json
  5. 求1千万的阶乘能被18整除多少次 (简单一点的题目是, 1千万的阶乘能被9整除多少次, 或者能被7整除多少次)
  6. 给定一个正整数n作为边长,请按照下图画出正方形,正方形的边按照A-Za-z0-9排列。
n=1

 A
----------
n=2

 A B
 D C
---------
n=3

 A B C
 H   D
 G F E
--------
n=4

 A B C D
 L     E
 K     F
 J I H G
--------