Momenta 一面

前情提要:在boss上找了10多家本地的企业,只有Momenta给了回复,简历过了之后就约面。

岗位是C++系统研发,比较神秘的是官网上没找到广州的岗位但是boss上有。
全长约40min。
※还是没做题

① 挑一个项目介绍一下吧(20min)。
我把操作系统课设做的类UFS文件系统拿来说了说,一边对着代码一边讲解。
问了关于磁盘影像文件、inode、create系统调用实现等等内容。有没有做系统调用以外的东西?(应该没有)有没有Linux做出来的你没做出来的东西?(我把fsync调用讲了一下,那个我是直接调用C库的)fsync和fdatasync有什么区别?(看了眼代码注释想起来后者还可以同步元数据然后说了一下)
② 见过extern C这样的语句吗,为啥在C++中调用C库要这么写。(不知道,随便答了一个gcc和g++编译的逻辑有区别)
③ 多态讲一下
讲了虚函数、虚函数表和指针,但是忘了指针怎么找到对应的派生类重写的函数了。
④  C++11了解过吗(了解,智能指针、多线程),shared_ptr是线程安全的吗。
⑤ STL容器了解哪些,map和unordered_map有序/无序。用迭代器遍历map的过程中如果删东西会有问题吗。
⑥ 对vector和list用sort有什么不一样吗(我用list用的不多,大概答了一下vector花样更多)
⑦ 你简历写到阅读csapp,你印象最深刻的是哪个(有点紧张,答了个当时喜欢用gcc -S看O1/O2/O3优化下汇编的不同)
⑧ 除了这些编译器自动优化的以外,有没有进行手动优化(答了一个比较远古的玩意:i++和++i的区别,最后说了一下现在这俩效率差不多)
⑨ 二维数组,按行读/按列读哪个比较快,(我说按列,讲了一下当时做矩阵运算优化的时候关注过,其实按行,“可能我和你对行的理解不一样”)。为什么(忘记了当时做实验是哪个了,回答寄存器,说错了)
⑩ 反问:想要点学习和进步的建议,建议我多看一下C++基础特别是C++11 xD

总结:真细啊,开摆了。

------------------

当天晚上吃饭的时候打电话通知二面,意想不到的惊喜,好好复盘加油学习吧
全部评论
面试官水平太高了
1 回复 分享
发布于 2024-03-06 15:52 广东
同班啊,要不加个联系方式好交流😂
1 回复 分享
发布于 2024-03-06 18:02 广东
woc,真不错,我看了好几个momenta的一面,问智能指针的好多,,,明天momenta测开一面了,,,希望能过,第二次面试
1 回复 分享
发布于 2024-04-21 21:02 广东
佬是实习前面的吗,还是说实习过程还是一直面来提升自己呀
1 回复 分享
发布于 2024-04-21 21:04 广东
强的
点赞 回复 分享
发布于 2024-03-06 21:02 广东
哥,算法题考什么了
点赞 回复 分享
发布于 2024-03-27 14:02 江苏
哥 你拿到oc了吗
点赞 回复 分享
发布于 2024-04-12 20:11 湖南

相关推荐

2024-12-11 10:23
北京邮电大学 C++
#通信硬件知识分享# 1. 嵌入式系统的组成嵌入式系统通常由以下几个部分组成:硬件平台:包括微处理器(如ARM、MIPS、x86等)、传感器、执行器、输入输出设备(如LCD、按键、LED等)。操作系统:嵌入式系统可以使用实时操作系统(RTOS)或裸机(bare-metal)开发。RTOS如FreeRTOS、uC/OS-II等,裸机编程通常指直接与硬件打交道,没有操作系统的介入。软件:包括驱动程序、应用程序、系统软件等。驱动程序负责硬件与软件的通信,应用程序则实现系统功能。2. 嵌入式开发工具链嵌入式开发通常需要一系列的开发工具:集成开发环境(IDE):常用的IDE有Keil、IAR Embedded Workbench、Eclipse等,它们提供了代码编辑、编译、调试等功能。编译器:常见的嵌入式编译器有GCC、ARM Compiler等,能够将源代码编译成适合嵌入式平台的机器代码。调试器:如JTAG调试器、ST-Link、OCD等,用于调试程序的执行,帮助开发者查看寄存器、内存等信息,实时诊断问题。仿真器:帮助开发者在没有实际硬件的情况下测试代码。3. 嵌入式编程语言嵌入式开发中,最常用的编程语言是:C语言:几乎所有嵌入式开发都使用C语言,因为它能够直接操作硬件,提供较高的执行效率,并且占用内存较少。嵌入式开发中,C语言常用于编写驱动、操作系统和应用层代码。汇编语言:对于需要极高性能和硬件控制的任务,汇编语言有时用于优化代码,直接操作硬件寄存器。C++:在一些复杂的嵌入式系统中,C++用于面向对象编程,尤其是在处理较为复杂的算法时。4. 嵌入式开发中的实时性要求实时性是嵌入式系统中至关重要的概念,特别是在处理信号采集、控制系统时。根据实时性要求,嵌入式系统可以分为:硬实时系统:对时间要求非常严格,任务必须在规定的时间内完成,否则将导致系统失败。例如,航空航天、医疗设备等。软实时系统:虽然有时间限制,但如果超时不会导致系统完全失败,系统仍然能正常工作。例如,视频播放、音频处理等。5. 基本的嵌入式开发流程嵌入式开发流程一般包括以下步骤:需求分析:明确系统的功能需求、硬件需求、性能要求等。硬件选择:选择适合的微控制器(MCU)或微处理器(MPU),并了解其硬件资源(如GPIO、UART、SPI、I2C等外设)。软件设计:根据需求设计嵌入式软件架构,包括驱动、RTOS配置、应用层逻辑等。编程与调试:在开发环境中编写代码,进行调试和测试,确保软件的正确性和性能。测试与验证:在目标硬件上进行系统测试,验证软件和硬件的协同工作。我面试看的是大佬的面经,链接放下边了  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
评论
18
53
分享

创作者周榜

更多
牛客网
牛客企业服务