字节后端开发-基础架构一面(也不知道过没过)
开头自我介绍,开始吟诵,面试官对我的qt+硬件+服务器项目不感兴趣便开始询问使用语言是否为cpp。
1.使用过哪些cpp11以上新特性。
答:智能指针三剑客(shared_ptr, unique_ptr, weak_ptr).....
2.开始询问shared_ptr的底层实现。
答:引用计数器+裸指针。
3.shared_ptr 解决了普通指针的什么问题。
答:RAII对象创建和析构时能自动管理资源,解决内存泄露。
4.是否能设计一个shared_ptr,这个shared_ptr里面有哪些成员变量。只答出来:裸指针+引用计数器,也许对数组需要记录长度,析构时范围释放。
面试官不语。
5.weak_ptr是否使用过,具体api调用。答:创建对象时需要指向shared_ptr, 拿指针时需要lock。
是否能设计一个weak_ptr。(😅给菜鸡干懵了,便开始临时发挥。)
答:也需要一个引用计数器来记录shared_ptr的引用计数器,当lock时,若shared_ptr引用计数器为0时,他返回空指针。
6.unique_ptr的使用场景,我就往单例上靠。
7.进程间通信哪些方式。开始吟唱。
提到了共享内存和消息队列,消息队列怎么实现😅,开始说是一个单向队列(不知道linux系统底层是但还是双),就答一个消费者模型的单向queue。还问了本地套接字的使用api调用过程。
8.线程同步方式。开始吟唱。
提到了互斥锁,互斥锁底层实现😂。哥们不行了,提到了线程阻塞和休眠。问,怎么实现线程阻塞和休眠,答涉及线程调度,深了不会了。
9.一道设计题,主线程创建一个资源在子线程消费完之前wait住,简单的用mutex对一个int val加锁和std::thread实现了对这个共享变量的访问。面试官看完能运行就放我走了。
看到的面试官都好累(上班不容易呀),明天又要干那b横项,希望能早日毕业,早日放我实习,😖。
1.使用过哪些cpp11以上新特性。
答:智能指针三剑客(shared_ptr, unique_ptr, weak_ptr).....
2.开始询问shared_ptr的底层实现。
答:引用计数器+裸指针。
3.shared_ptr 解决了普通指针的什么问题。
答:RAII对象创建和析构时能自动管理资源,解决内存泄露。
4.是否能设计一个shared_ptr,这个shared_ptr里面有哪些成员变量。只答出来:裸指针+引用计数器,也许对数组需要记录长度,析构时范围释放。
面试官不语。
5.weak_ptr是否使用过,具体api调用。答:创建对象时需要指向shared_ptr, 拿指针时需要lock。
是否能设计一个weak_ptr。(😅给菜鸡干懵了,便开始临时发挥。)
答:也需要一个引用计数器来记录shared_ptr的引用计数器,当lock时,若shared_ptr引用计数器为0时,他返回空指针。
6.unique_ptr的使用场景,我就往单例上靠。
7.进程间通信哪些方式。开始吟唱。
提到了共享内存和消息队列,消息队列怎么实现😅,开始说是一个单向队列(不知道linux系统底层是但还是双),就答一个消费者模型的单向queue。还问了本地套接字的使用api调用过程。
8.线程同步方式。开始吟唱。
提到了互斥锁,互斥锁底层实现😂。哥们不行了,提到了线程阻塞和休眠。问,怎么实现线程阻塞和休眠,答涉及线程调度,深了不会了。
9.一道设计题,主线程创建一个资源在子线程消费完之前wait住,简单的用mutex对一个int val加锁和std::thread实现了对这个共享变量的访问。面试官看完能运行就放我走了。
看到的面试官都好累(上班不容易呀),明天又要干那b横项,希望能早日毕业,早日放我实习,😖。
全部评论
大哥你这个是base哪里的
请问学长在官网投的吗,我没看到基础架构部门呢
相关推荐
点赞 评论 收藏
分享

点赞 评论 收藏
分享