同花顺二面(C++开发)

1.手撕一道easy题

给一个整形数字,交换其中的两位,得到最大值

比如 1234 得到 4231

2.实习经历(项目难点,我这实习做的项目没难点啊我能怎么办)

3.const和define 的区别

编译阶段:define 是在编译预处理阶段进行替换,const 是在编译阶段确定其值。

安全性:define 定义的宏常量没有数据类型,只是进行简单的代码替换,不会进行类型安全的检查;const 定义的常量是有类型的,是要进行判断的,可以避免一些低级的错误。

存储空间:define 定义的宏定义只是作为代码替换的表达式而已,宏定义本身不占用内存空间,define 定义的宏常量,在程序中使用多少次就会进行多少次替换,内存中有多个备份,实际使用宏定义替换代码时占用的是代码段的空间;const 定义的常量占用静态存储区的只读空间,程序运行过程中常量只有一份。

define 可以接受参数构造非常复杂的表达式,const 不能接受参数。

4.new和malloc的区别

new和delete一起使用,new在申请的时候会初始化,不能改变申请空间的大小。

malloc和free使用,malloc在申请的时候只会返回一块内存空间,malloc可以改变申请空间的大小。

new 是 c++ 中的一个操作符,而 malloc 是 C 中的一个函数。new 作为一个运算符可以进行重载,而 malloc 作为一个函数不支持重载。

new 可以指定内存空间初始化对象,而 malloc 只能从堆中申请内存。

5.delete和free的区别

delete 是 C++ 中的一个操作符,如果对象存在析构函数,它首先执行该对象所属类的析构函数,进而通过调用 operator delete 的标准库函数来释放所占的内存空间。delete 用来释放单个对象所占的空间,只会调用一次析构函数;delete [] 用来释放数组空间,会对数组中的每个元素都调用一次析构函数。

free 只会释放指向的内存,不会执行对象的析构函数;delete 则可以执行对象的析构函数;free 函数只是将参数指针指向的内存归还给操作系统,并不会把参数指针置 NULL,为了以后访问到被操作系统重新分配后的错误数据,所以在调用 free 之后,通常需要手动将指针置 NULL。

delete 是 C++ 中的一个操作符,可以进行重载;而 free 是 C 中的一个函数,不能进行重载;

6.问了一个比赛,问我这个比赛是啥规模、等级

。。。。。。

其他的问了一些个人情况,基本没问啥,感觉问的很少。

#同花顺#
面试经历总结 文章被收录于专栏

一些面经总结

全部评论
寄了,我没约面
3 回复 分享
发布于 2023-10-08 00:21 广东
uu hr面了麻烦踢我一下 好知道我挂没挂
1 回复 分享
发布于 2023-10-08 01:12 浙江

相关推荐

8.15 一面约的晚上七点半,过程 52 min,问的问题其实都很基础了,没有让编译器手撕代码;但奈何本人太菜,还是很多问题答的不对,不过面试官很和蔼,全程都在引导(阿里的笔试和测评今晚一起发邮件了,明天早上 10 点就笔试,时间好赶)8.18 一面问题补充两天了没有反馈,应该是凉了补充一下一面的问题1. 自我介绍2. 了解一下想做什么(从 0 到 1 参与一个项目)3. 笔试题复盘4. 数据结构:哈希的底层原理,哈希冲突的解决方法,以及哈希冲突的具体查找过程(索引上的哈希值是否相等?)5. 数据结构:特殊二叉树,满二叉树的性质6. 数据结构:二叉树的层序遍历,二叉树的深度遍历(有几种顺序,非递归的结束条件)7. 数据结构:有向图和无向图,邻接矩阵和邻接表8. 数据结构:数组实现栈(太紧张了,在面试官引导下说对了)9. CSharp:接口和抽象类的区别,抽象类的抽象方法在派生类中不实现是被允许的吗?(C# 的八股背的好少,被狠狠拷打了)10. CSharp:装箱和拆箱11. CSharp:.NET 垃圾回收机制(这里向面试官申请去说了一下 Unity 中 Mono 和 IL2CPP 的不同实现,说完后面试官也进一步向我科普了一下 Unity6 的贝姆默认开的是增量)12. 设计模式:说一下 SOLID 原则(因为我简历上写了这个)13. 设计模式:里氏替换原则的实际应用(这里说了一下工厂方法和抽象工厂)14. Unity:Canvas 的三种渲染模式,overlay 这种模式下为什么不需要相机15. Unity:RectTransform 和 Transform 的区别,RectTransform 比 Transform 多了一个什么位置(anchoredPosition,完全忘记了)16. Unity:UI 的排列展示组件(Layout Group),Grid 和另外两个的区别17. Unity:UI 的滑动组件,超出滑动区域的元素如何隐藏或裁剪(回答了 Mask)18. Unity:三个 Mask 的底层原理(不小心把模版测试说错成深度测试了,面试官引导我两次都没反应过来,最后在下一个问题的回答过程中想起来并补充了一下,好尴尬)19. Unity:场景题,用户上传的图片都是方形的,如何实现圆形头像的显示(回答的传入圆形图片,说了一下 alpha 显示条件以及自定义模版测试)20. 项目:介绍一下前两个项目做到什么程度21. 项目:MMO 最重要的模块是哪些,网络的实现,客户端之间的同步(协议广播 + 反射处理)22. 项目:角色控制的实现(新版 Input + Cinemachine)23. 项目:对话系统的实现(UI Toolkit + IMGUI),为什么没有用 UGUI(回答了面片开销)24. 反问:如果能够加入贵司,我会负责什么样的一个位置?(会有集中培训,然后按需安排)25. 反问:还需要学习什么(Unity 官方文档、渲染管线、优化、GameObject,尤其是资源管理)还以为凉了,中午的时候 HR 电话和我约了二面8.21 二面还是晚上七点半,过程 47 min,是半聊天半技术的方式,在聊的过程中穿插着问了些简历上的问题,每次回答之后面试官会以自己的角度来阐述问题,和他交流才终于知道架构师到底需要怎样的知识储备了;面试官真的很有人格魅力和技术力,被深深折服了8.22二面通过啦,约了下周一的三面昨晚面试官劝我,趁年轻去追求自己喜欢的,所以接下来我想投投大厂尝试一下8.25 三面下午三点,过程 39 min,面试官是 HRBP,总共三个环节:1. 个人情况了解;2. 测评结果探讨;3. 反问;面试结束后,另一位 HR 与我持续沟通,为我争取了很高的薪资并发放了口头 offer,特别感谢这位 HR 以及所有的面试官,但是由于我个人及实验室原因,目前打算释放这个 offer 了
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
------------------------------------题目一:题目大意:有 n (1 <= n <= 2e5) 本书,编号为 ai (0 <= ai <= 1e9)。你需要将它们放入若干个临时书架(先进先出队列),要求奇数编号和偶数编号的书不能混放。最终,你需要从这些书架中按顺序取出书本,形成一个严格递减的序列。问最少需要多少个临时书架。解法思路:奇偶性限制使得奇数和偶数两组书的处理是完全独立的。对于每一组(例如奇数),为了能按顺序取出形成一个严格递减序列,放入同一个书架的书必须是原序列中的一个严格递减子序列。因此,问题转化为:将奇数子序列和偶数子序列分别拆分成最少数目的严格递减子序列。根据Dilworth定理,一个序列最少能被划分成的递减子序列的数量,等于其最长严格递增子序列(LIS)的长度。所以,分别求出奇数序列和偶数序列的LIS长度,两者相加即为答案。LIS可用经典的O(n log n)算法求解。------------------------------------题目二:题目大意:有 n (1 <= n, m <= 1000) 个部门和 m 个项目,部门权重为 ai,项目难度为 bj (1 <= a, b <= 1e4)。还有一个 n x m 的绩效矩阵 vij (1 <= v <= 1e4)。总绩效为所有 wij = vij * (ai + bj) 的和。你可以任意交换部门的顺序(行和a的顺序),也可以任意交换项目的顺序(列和b的顺序),目标是最大化总绩效。解法思路:关键在于对总绩效公式进行数学变形。总绩效 = Sum(vij * (ai + bj)) = Sum(vij*ai) + Sum(vij*bj)。将求和顺序改变可得:Sum(ai * Sum_j(vij)) + Sum(bj * Sum_i(vij))。这等价于 `部门权重向量a` 与 `矩阵行和向量` 的点积,加上 `项目难度向量b` 与 `矩阵列和向量` 的点积。根据排序不等式,两个向量的点积在它们同序排序时最大。因此,先计算出矩阵的所有行和与列和。然后,将部门权重a和行和向量都按降序排序后计算点积,再将项目难度b和列和向量都按降序排序后计算点积,两者相加即为最大总绩效。------------------------------------题目三:题目大意:有 n (1 <= n <= 1e5) 个服务区域,每个区域是数轴上的一个闭区间 [li, ri] (|li|,|ri| <= 1e9)。你需要选择一个整数点 x 作为仓储中心,使得总运输成本最小。单个成本定义为:如果 x 在区间内,成本为0;否则成本是 x 到该区间最近端点的距离。解法思路:这是一个经典的几何中位数问题。总成本函数是所有单个成本函数的和,而每个单个成本函数 `cost(x)` 都是一个V形的凸函数。多个凸函数之和仍然是凸函数,其最小值点可以通过分析斜率变化找到。总成本函数的斜率在每个区间的端点 `li` 和 `ri` 处发生变化。当 x 从负无穷向正无穷移动时,初始总斜率为-n,每经过一个端点,斜率就加1。当斜率从负数变为非负数时,就到达了成本最小的位置。这个位置恰好是所有 `2n` 个端点(所有 `li` 和 `ri` 的集合)的中位数。因此,只需收集所有 `2n` 个端点,找到它们的中位数作为最优选址x,然后计算总成本即可。具体的详细代码和题解可以戳我主页的文章查看
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
评论
12
30
分享

创作者周榜

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