阿里云一面

这周面了两个部门,基本都是根据简历问答,不具参考性,有一个behavior question 问了半小时(晕了)。。。
主要语言c++

遇到几个刁钻问题我没回答上来的:
1.  想让虚表指针越界, 怎么操作?或者发生在什么情况下?:没答上来
或者问的是 虚函数表中 让地址指向错误的位置(指向的位置不是对应的虚函数地址),该怎么操作?
2. rpc 丢包怎么办? 答:如果 这个rpc是基于tcp的,那会发生超时重传?
发生在应用层还是内核层? 答:内核吧
3. stl vector 扩容的时候,之前容器中的元素会不会析构? 强调是元素,不是容器

如果有朋友会的话讨论一下,我自己网上搜没得到准确答案。。谢谢
#面经##阿里云##C/C++#
全部评论
第2个,tcp的所有操作都是在内核完成的,第三个,vector扩容的思路是申请一个新的二倍大小空间,然后把原来的复制过去,然后析构掉原本的空间。所以旧的元素是先被复制一个新的然后析构,第一个我有个猜想就是基类指针用static_cast往下强转,然后派生类新增了一条虚函数,但基类没有,此时用强转之后的指针访问派生类新增的虚函数是不是会越界啊。
1 回复 分享
发布于 2022-02-28 10:18
。第一题是让你在编译期做一个越界还是运行时做呀..运行时的话应该将变量前八个字节指向的内容乱改就行 第三题会析构,会把旧数组元素复制到新数组,然后析构旧数组元素,在源码里可以看到会调用destroy函数。不过要是问为啥是复制到新数组而不是移动到新数组我就不会了..
点赞 回复 分享
发布于 2022-04-18 19:54
第一个,直接获取虚表指针地址,然后转函数指针再设置偏移越界,再调用该函数就能手动越界了吧?
点赞 回复 分享
发布于 2022-03-05 12:43
第3个应该是不一定吧。 vector在内存中是连续的,在当前连续内存上,空间够的话,扩容时,不容易原有元素。如果当前连续内存不够的话,编译器会找块足够的连续空间,然后把原有元素移动到新空间,同时释放掉原有空间,这样释放时,应该会调到元素的析构。
点赞 回复 分享
发布于 2022-02-28 11:41
3肯定会析构的吧
点赞 回复 分享
发布于 2022-02-21 22:34
蹲一个问题1 3的答案,我也没见过这俩问题...
点赞 回复 分享
发布于 2022-02-21 10:17
问题2是不是问的应用层还是传输层,内核层是个啥。
点赞 回复 分享
发布于 2022-02-20 10:27
behavior question 问什么呀
点赞 回复 分享
发布于 2022-02-19 23:27

相关推荐

05-20 22:38
已编辑
南京理工大学 Java
45min提问1. 讲一下你实习时候这个项目的大概业务流程2. 二级缓存怎么设计的,像二维码的同时核销的并发,在你这个缓存里效果是怎么样的(感觉他没问清楚..)3. 提到Jmeter,怎么设计线程组,用了多少个线程组,使用多少个并发请求4. Jmeter是在本地还是服务器部署,讲一下你使用的过程5. Jmeter本地跑一万个线程能跑起来吗(问Jmeter的瓶颈)6. 布隆过滤器怎么实现的,原理,效果7. Redis是单机部署还是分布式部署,为什么不用分布式(因为实习的公司只要单机阿..)8. Redis常用数据结构,List和Set的区别,存商品id用哪个9. 缓存的过期机制如何设计的,设计随机过期机制的作用10. 缓存读写策略,多个服务节点对Redis操作怎么办11. 大key或者热点key会导致什么问题,如何解决12. Redis哨兵机制13. 数据库锁的类别14. 数据库事务的隔离级别,幻读的现象15. 优惠券秒杀,如何测试(界面,功能,兼容,安全等..)16. Netty核心组件了解吗,作用分别是什么17. NIO和BIO区别18. Bootstrap/ServerBootstrap的区别19. Netty的长连接和心跳监听20. TCP沾包问题的解决21. 拿到一个慢sql,如何分析定位问题22. 索引失效的情况,数据的类型和大小影响索引的功能吗23. 回表查询24. MySQL日志了解哪些,他们的功能25. 介绍bin log26. 为什么主从数据同步不用redo log 要用bin log手撕:链表相交的结点(10min)用常规的指针遍历(到尾节点就跳到另一条链表)让我回去思考一下再优化时间复杂度反问..感觉一面面了别人两面的量,应该凉了
查看26道真题和解析
点赞 评论 收藏
分享
评论
5
17
分享

创作者周榜

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