当前位置: 首页 > 面试经验 >

米哈游 移动客户端开发 一面

优质
小牛编辑
98浏览
2023-09-14

米哈游 移动客户端开发 一面

  • C++11新特性了解哪些
  • 什么是移动语义
  • 面试官给了一个线程池代码,给五分钟读代码,然后给面试官讲解一遍(C++11写的)
  • 万能引用的作用
  • 线程池中vector<std::thread> 有什么用,thread的资源在堆上还是在栈上
  • vector扩容,什么时候触发扩容
  • 除了mutex还用过其它的锁吗
  • 讲讲C++17的读写锁
  • unique_lock 和 lock_guard 的区别
  • 问线程池代码中,有两处用到了unique_lock,问能不能替换为lock_guard (条件变量调用wait时使用的unique_lock不能换,因为wait函数内部会有解锁和加锁的操作)
  • 平时编程什么情况会抛异常
  • 异常和返回错误码的区别和优缺点
  • 条件变量notify_one 和notify_all的区别
  • 条件变量的wait函数,第二参数接受一个返回值为bool的可调用对象,有什么用(防止虚假唤醒)
  • 为什么会有虚假唤醒(不会,寄)
  • 如果nofitfy在wait之前调用,导致notify丢失,有什么解决方式(再用一个条件变量对notify进行同步)
  • 条件变量wait的原理
  • join、detach区别
  • 既不join也不detach会发生什么(子进程先结束会产生僵尸进程,父进程先结束导致程序崩溃)
  • 为什么父进程先结束会崩溃(线程共享资源,父进程结束对资源进行回收)
  • 什么是死锁、怎么防止死锁(严格按顺序加锁、原子性的加锁,要么都加要么都不加)
  • 严格按顺序加锁可以防止死锁,那么解锁顺序可以乱序吗(不造,答了应该不影响)
  • 说说智能指针
  • weak_ptr原理(寄,只答了shared_ptr的控制块里面不仅只有引用计数,还有弱引用计数)
  • unique_ptr大致是怎么实现
  • make_shared的好处
  • using 作用
  • typename有什么用(访问模板类中的自定义类型时需要加上typename为编译器指出这是一个类型而不是一个成员变量)
  • malloc 与new区别
  • new 和 new[] 的区别,对new[] 使用delete 有什么问题 (内存泄漏)
  • 介绍一下HTTP
  • TCP和UDP区别
  • 结构体内存对齐,发了一段结构体代码,解释结构体占用大小,哪些位置会产生空洞
  • 代码到可执行文件的过程
  • 说说shared_ptr原理,然后手撕一遍shared_ptr

算法题:加起来和为目标值的组合(二)

太菜了,居然没做出来,脑子嗡嗡的,还差一点完成面试官让讲思路

反问:

流程: 3 + 1

半小时后收到邮件约了二面

#24届软开秋招面试经验大赏#
 类似资料: