【360】C++岗-后端开发面经(已offer)

360 一面

IO模型
面向对象的理解?c++的特性
封装、继承、多态

  1. c++类的成员变量和成员函数内存分布情况
    成员函数不占用对象内存,所有函数是放在代码区的。对象大小和对象中数据成员大小是一致的。
  2. class 和struct的区别,结构体可以定义其他函数吗?
    class默认访问权限为private
    struct是public。struct可以包含成员函数,能继承,能实现多态。
  3. nullptr和NULL区别
    NULL在c++中为0(在C中是void*类型)c++中不允许隐式转换成其他类型。
    nullptr在任何情况下都代表空指针。
  4. 互斥锁和自旋锁的区别
  5. new和malloc区别,free和delete区别
  6. 设计模式
  7. linux显示一个文件大小的指令 ls –lh
  8. SGD与adam 区别 项目训练怎么调参
    计算目标函数关于当前参数的梯度
    根据历史梯度计算动量
    计算当前时刻下的下降梯度
    根据下降梯度进行更新
    adam是自适用矩阵估计,会计算二阶动量
    SGD下降速度慢
  9. 怎么把一个程序放在后台
    在命令后面加上 ./test &
    在前台执行的命令,放到后台执行:ctrl+z bg % 1
    在退出shell时继续运行:nohup ./test &
    查看当前终端所有任务PID,状态 jobs –l
    查看当前所有进程:ps –aux
    杀死一个进程:前台ctrl+c,后台:kill PID
    将后台中的命令调至前台继续运行:fg %xxnumber
  10. TCP怎么实现可靠传输?
  11. 拥塞控制
  12. TCP Time_wait状态过多怎么办?
    打开系统time_wait的重用和快速回收
    重用:tcp_tw_reuse=1,默认为0,表示关闭.
    socket中设置选项,跳过四次挥手(不建议)
    修改net.ipv4.tcp_max_tw_buckets,调整time_wait状态上限个数.当连接数超过该参数,新关闭连接直接关闭;
  13. close_wait状态过多怎么办?
    出现原因:被动关闭方未关闭socket造成
  14. 构造函数为什么不能为虚函数
  15. vector实现机制
    维护一块连续的线性空间,空间不足时,重新配置空间,移动数据,释放原空间,会造成迭代器失效
  16. unordered_map与map的区别
  17. shared_ptr
    共享智能指针,多个智能指针可以指向相同的对象,使用控制块管理引用计数,当计数器等于0时,资源会被释放。可以传入unique_ptr,weak_ptr来构造,也可用new构造
  18. 网络编程了解吗
  19. int p[10] 和int (p)[10] intp[10]强调数组,表示含有int 指针的一个数组p
  20. 编程题:反转链表

360二面:

项目详细
const *p如果程序运行时向里面写值会出问题吗?什么问题?
多个CPU怎么允许
快排时间复制度 一个树的遍历的时间复制度
socket write成功返回之后,其数据在哪里
write函数调用瞬间,将数据移到输出缓冲; read函数调用瞬间,从输入缓冲读取数据。 write函数在数据移到输出缓冲时返回。

发表评论

后才能评论