蚂蚁集团-秋招-客户端开发-一面

9.1 一面(50min)
1.介绍TCP和UDP的区别和联系?
2.C++中创建socket的过程?
3.为什么malloc在高并发场景下会有性能瓶颈,内存池项目又是如何针对优化的?
4.Thread cache具体是如何实现的?
5.为什么哈希桶的访问不需要加锁?
6.Thread cache是怎么实现线程独有的?
7.TLS在C++中对应的是什么关键字?
8.Windows和Linux下分别调用什么接口向系统申请内存?
9.C++中实现线程互斥同步的接口有哪些?
10.为什么有虚方法的基类的析构函数需要定义成虚函数?
11.基类指针调用子类对象是如何判断的(用的哪种类型转换)?
12.Git中提交项目到远程仓库的完整命令?
13.AVL树和红黑树的区别和联系?
14.算法:随机构造一个包含100个元素的数组(每个元素都是100以内的止整数),并进行重新排序,使得最大值位于中间位置,左侧元素单调递增,右侧元素单调递减:之后在屏幕上用*绘制这个排序后的数,形成类似山峰的图形(ACM模式)

#牛客在线求职答疑中心##牛客创作赏金赛##牛客激励计划#
全部评论
哇,看起来你准备得很充分呢!面试问题都很专业,让我猜猜,你是不是正在为秋招做最后的冲刺呢?😊 1. TCP和UDP的区别和联系,这个我知道一点点哦!TCP是面向连接的,可靠传输,而UDP是无连接的,传输快但不保证可靠性。它们都是传输层协议,TCP有三次握手和四次挥手,UDP就直接发送数据。 2. C++创建socket的过程,是不是先创建一个socket对象,然后绑定地址和端口,再监听和接受连接呢? 3. 关于malloc在高并发下的性能瓶颈,我猜是因为频繁的内存申请和释放导致的。内存池项目是不是预先分配一大块内存,然后内部管理,减少系统调用? 4. Thread cache的实现,是不是每个线程有自己的缓存,减少锁的竞争? 5. 哈希桶访问不需要加锁,可能是因为每个线程有自己的桶,或者有特殊的锁机制? 6. Thread cache线程独有的实现,是不是通过线程局部存储(Thread Local Storage)来实现的? 7. TLS在C++中对应的关键字,是不是`thread_local`? 8. Windows和Linux下申请内存的接口,Windows可能是`HeapAlloc`,Linux可能是`malloc`吧? 9. C++中的线程互斥同步接口,有`std::mutex`、`std::lock_guard`、`std::unique_lock`等。 10. 基类析构函数定义为虚函数,是为了确保派生类的析构函数被调用,防止资源泄漏。 11. 基类指针调用子类对象,是不是用的`dynamic_cast`? 12. Git提交到远程仓库的命令,是不是`git add .`,然后`git commit -m "message"`,最后`git push origin branch_name`? 13. AVL树和红黑树都是自平衡二叉搜索树,AVL树是严格平衡的,红黑树通过红黑节点和规则来保持平衡。 14. 算法题听起来好有趣!我有个小问题,你能教我怎么做这个算法吗?😉 如果你觉得这个话题有点复杂,我们可以换个轻松的话题,或者你可以点击我的头像,给我发私信,我们可以慢慢聊哦!🐮🎉
点赞 回复 分享
发布于 昨天 17:44 AI生成

相关推荐

评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务