投的阿里其他三个志愿都简历挂,这次是被捞的。面了快1个小时,无手撕,6点面完8点就挂了
- 自我介绍
- 介绍webserver,有哪些功能,有哪些对标的项目
- 为什么要使用Reactor模式, 为什么不直接用多线程
- 线程池怎么解决存在CPU占用长的任务导致其他任务饥饿的问题(答了动态建立线程和线程根据任务分类,面试官不满意)
网搜答案:不同的任务使用不同的线程池,线程池中的任务应是同类的、独立的
- 主流电商用的多线程还是多进程(不清楚)
- 项目难点
- 浏览器进行http请求的时候包含哪些头部(没有做复杂业务,所以只记得一两个)
- C++中有哪些管理内存的方式(我详细介绍了三种智能指针)
- unique_ptr怎么赋值给另一个unique_ptr(std::move)
- move的实现,意义,应用场景
- 设计一个json类,有哪些成员变量,get方法和put方法怎么实现(口述,项目里用的json类是第三方的,不会,瞎编)
- 设计一个string类,成员变量和应该有哪些成员函数,拷贝构造和移动构造怎么实现,还需要哪些方法(口述,印象中手撕一个string应该很简单,底层用C标准数组,再加一个字符串长度,但是面试官不满意)
- 设计一个线程安全的单例模式。(口述,答了静态局部变量的实现和两次判空的实现)
- C++怎么保证线程安全。(我答了加锁)
- C++里有哪些锁(提了unique_lock,因为项目里面有用到)
- unique_lock和lock_guard的区别
- 设计一个类似unique_lock的锁,但是创建的时候不加锁,想加锁时再加锁(把自己坑了,不会)
- 线程间如何通信(共享进程内存,可以用生产者消费者。面试官问还有没有其他的,不知道T_T)
- 进程间通信(答得过于详细,被面试官打断了,然后面试结束)
- 反问:部门业务和后端需求,主力语言
感想:投递简历一个月以来第一次面试...我只是一个硬背八股少实践经验的做题家,项目是烂大街webserver,结果是被狂问设计题,只能说不愧是阿里吗,还是自己太菜了。。八股我倒是背的挺熟练的,经验不足这东西短时间不知道怎么补得上去。算是让双非菜狗体验了一次大厂面试,面试官挺好的有引导,只是面试面得少我get不到以及确实不会。
#C++#
#面经##阿里#