阿里海外电商 Lazada C++ 面经

inline 失效的场景有哪些呀,有没有大佬解释一下
====
1. C++ 中 struct 和 class 区别

2. inline 失效场景

3. 智能指针

4. g++ 编译过程

5. epoll,mutex

6. event_loop 了解吗

7. 如何防止一个头文件 include  多次

8. 如何快速判断 2^n,链表判断有环,手撕 LRU
全部评论
在C++中,inline是一种用于优化函数调用的关键字。它的作用是将函数的定义直接插入到调用该函数的地方,以减少函数调用的开销。然而,并非所有情况下都能成功地使函数内联,以下是一些导致inline失效的场景: 函数体过大:如果函数体非常大,将其内联可能导致代码膨胀,造成代码冗余和缓存不命中,反而降低了性能。编译器可能会忽略inline关键字,将函数视为普通的非内联函数。 函数包含递归调用:递归函数无法直接内联,因为递归调用会导致函数体重复嵌套,无法在编译时展开。 虚函数:虚函数是通过虚函数表进行动态绑定的,编译器无法在编译时确定调用哪个函数,因此虚函数不能内联。 函数指针:当函数通过函数指针进行调用时,编译器无法在编译时确定具体调用哪个函数,因此无法内联。 条件判断、循环和异常处理:包含复杂的条件判断、循环和异常处理的函数,由于控制流程的复杂性,编译器可能不会内联这些函数。
11 回复 分享
发布于 2023-06-08 22:06 广东
inline函数好像是将代码直接替换到调用的位置,提高效率,建议性的关键字,一般来说还看编译器是否优化。 1、函数内太多for或者if选择。 2、递归函数。 3、构造和析构函数。 4、虚函数。 5、使用函数指针调用内联函数。(这个不清楚。。。)
1 回复 分享
发布于 2023-06-08 17:48 广东
老哥是实习还是提前批呀
1 回复 分享
发布于 2023-06-08 11:17 北京
手撕在哪个平台撕的啊 楼主
点赞 回复 分享
发布于 2023-06-10 09:37 广东
这么难,是北京那个引擎架构嘛
点赞 回复 分享
发布于 2023-06-08 12:07 湖南
有后续了吗
点赞 回复 分享
发布于 2023-06-08 11:00 湖南
面试用了多久
点赞 回复 分享
发布于 2023-06-08 11:00 广东

相关推荐

头像
04-20 22:26
南京大学 Java
攒人品ing~(一天三面我燃尽了)个人背景介绍一、 项目深挖:高并发博客系统架构面试官提问:你的并发控制和API限流是怎么做的?面试官追问:点赞的接口限流具体怎么实现的?面试官追问:数据最终怎么落库?MQ消息丢了怎么办?二、 场景题:使用Redis实现QPS/QPM/QPD限流面试官提问:如果要用Redis限制一个接口在滚动窗口下的QPS、QPM、QPD,怎么做?第一版思路:将时间单位拼接到Redis Key中。面试官指出:这会导致Key数量爆炸式增长。第二版思路:使用Hash结构,记录用户在特定时间窗口内的访问次数。面试官指出:这种方式只能记录自然时间(如自然天、自然秒),无法满足滑动窗口的需求。第三版思路:使用ZSet实现滑动窗口,Score设为时间戳,Value设为唯一标识。每次请求进来先移除时间窗口之前的数据,再使用 `ZCARD` 统计当前元素个数来判断是否限流。面试官指出:在QPD(每天调用量)极大且高频的场景下,ZSet会导致元素过多,产生大Key问题。第四版思路(最终被认可):针对精度要求没那么高的QPM/QPD,采用“分桶计数”思想。将一天24小时分为1440个分钟桶,使用String存计数值。每次判断时只需将最近时间段内的桶数据相加即可,旧桶设置自动过期销毁。表示该方案可行。三、 项目深挖:缓存三大问题解决方案面试官提问:你在项目中提到的“布隆过滤器 + 互斥锁 + 逻辑过期”是怎么协同工作的?四、 手撕算法题目:LeetCode 124. 二叉树中的最大路径和。五、 反问环节问:入职后实习生的主要工作内容是什么?问:团队内部对于AI写代码的认可度如何?问:对我今天面试表现的评价和建议?
查看9道真题和解析
点赞 评论 收藏
分享
评论
5
41
分享

创作者周榜

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