广联达

C++ 开发一面面经

完整信息

19 条问法 · 16 道题

本篇目录

总体我感觉完全从简历项目方向去问的,也没有玩深入走,而且

一、开场与自我介绍

Q1 请先简单介绍一下你自己。

A:总体是:C 语言扎实,正在深入 C++,具备一定 AI 辅助的全栈开发能力,偏好从源码层面钻研实现。

二、系统层与应用层开发的区别

Q2 偏系统层的开发,在难度上和应用层开发有什么区别?

A:主要差别在资料的可得性。第一类是国产自研操作系统上的功能扩展开发,没有公开文档,内部文档又比较旧、有些接口没写,只能直接读源码和源码接口,一开始什么都不知道,这是最难的部分。第二类是内核侧的工作,虽然有公开的 Linux 内核资料,但我之前没接触过,需要重新学 KO 模块的编写与命令、内核 API 的调用方式,仍然要回到源码或内部文档里找实现。应用层恰好相反,公开文档和学习资料都比较充足。所以我理解差异主要在背景知识的获取成本上。

Q3 除了背景知识的差异,开发层面本身有大的区别吗?

A:有,主要是编程范式。我参与的两个项目都以 C 为主,C 不是面向对象的,所以是面向过程的写法,很多结构和流程要自己手工组织,代码里"自己写"的成分更多。应用层多用面向对象的语言,更强调对象抽象和面向对象的设计思想。

Q4 你之前的从业经历里,好像还没有太用过 C++?

A:确实没有具体做过。当时做手机底层驱动,直接接触的是 C;C++ 属于更上面一层,有专门的部门负责,我会看到一些,但没有具体承担。

Q5 用 C 的开发,除了驱动还有哪些内容?

A:驱动是 C 的主场,因为 Linux 内核本身用 C 实现。嵌入式也用 C,但和驱动的处境不同:驱动不是裸板,底下已经有一层铺垫,可以直接执行 C 代码;裸机嵌入式没有这层底层,要先看手册、调接口、写汇编,让汇编跳转到 C 编译出的程序入口才能跑起来。除此之外用 C 比较多的场景,我就不太了解了。

三、AI 辅助编程

Q6 AI 产出的代码、以及它对你编程的辅助,现在对你来说处于什么状态?

A:是一个逐步演进的过程。24 年底开始接触,25 年初开始长期使用,那时 Agent 还不完善,主要是对话式,我把 AI 当单模块实现助手:给出一个模块的实现想法,它出代码,我负责移植到自己的代码里做适配。25 年底到 26 年初,Agent 明显变强,有桌面端和命令行形态的工具,我就把它当成整体项目的协作者,边写计划边实现。26 年中开始主要用国产 Agent,流程稳定为:先让它写 Plan 或 Markdown 计划书,再按步骤拆分,我审查一遍,确认后一步一步交给它实现,每一步再自己审查。这样做的原因是,自己在提示词里往往描述不清,而它写出的计划书会把细节摊开,我一看就知道哪里缺、哪里不符合当前项目,再改一轮。整体上相当于"我当领导、它当员工"的协作方式。

Q7 接触过 OpenSpec、SuperPower 这一类 Spec 编程模式吗?

A:只能算知道,不算接触。知道有这类插件,也能装在常用的几个 Agent 工具上,但没有深入用过,实际就是装过、打开用过。

Q8 你刚才这套流程里,用过 ask、plan 这类模式吗?

A:用过,最常用的是 Plan 模式。给它一个 idea,它围绕这个想法一步一步提问,让我选或者自己填答案,最后生成一份 Markdown 计划书,我审查后确认是否继续。Ask 模式就是单纯的对话问答。真正落地项目时,Plan 是我用得最多的方式。

Q9 有没有拿这些工具做过你自己感兴趣的项目?

A:有。在 Windows 上用 AI 的 Plan 模式做过一个桌面图标分类的小项目:在桌面上生成一个方框,可以把桌面图标拖进去,效果类似手机上的文件夹,只是不做图标缩放,属于完整做过一遍的项目。

四、技术广度

Q10 有接触过三维领域吗?

A:大学时接触过,出于兴趣学过 3DMAX、Maya,也看过一点 Blender,都比较偏使用层面。最近这几年没有碰三维的东西。

Q11 有做过 CAD 研发,或者三维开发、模型开发这类工作吗?

A:没有,这方面确实没接触过。

Q12 做过数据库相关的工作吗?

A:关系型数据库了解一些,能说出 MySQL、PostgreSQL 这类;非关系型也就是 NoSQL,没有接触过,也没有实际用过。

Q13 什么时候该上数据库,什么时候用文件就够?

A:我的判断看数据量、可靠性和查询复杂度。数据量比较大、需要冗余备份时,就该有正式的存储形式;文件的问题在于通常要把整份数据读进来,几十万、几百万量级时内存和性能都扛不住,而数据库按需检索没有这个问题。另一方面,文件只有读写,缺少事务、缓存、分布式和一致性这些能力,需要分布式部署或一致性保证时,必然要上数据库,再在数据库上做拆分、加缓存。实践路径是:先文件过渡,数据量上来、或者出现复杂的查询读写和分布式需求,就整体转数据库。

五、经历追问与难点

Q14 这几段经历是实习还是工作?

A:是全职工作。

Q15 这些经历和项目里,哪一段挑战最大、最难突破?

A:分工作和项目两部分,工作是更重的那部分。刚工作时 C 语言基础偏弱,大学主要用 Java,进公司先从代码规范整改做起,不会的地方靠请教同事和查资料,白天写、写不完就留到晚上,节奏比较吃紧,前后大概持续了一个月。之后开始接新屏幕点亮的任务,因为不熟悉整体框架,一开始束手无策,只能找派任务的前辈和同部门同事,一边听他们开会讲解,一边读代码,逐步弄清框架结构、代码文件怎么组织、命名怎么写,才真正上手。这两段在学的时候耗时比较长,但学会之后后面的开发就快很多。项目上最费力的是第一个自研操作系统上的项目:没有公开文档,内部文档又老旧、缺接口,只能去读源码,加上当时刚入学还有课,前后花了大约两个月才摸清流程、开始实现。第二个内核对项目反而轻松,因为之前已经接触过 Linux 内核和模块编译,而且有 AI 加速。

Q16 遇到全新领域、自己没掌握的知识,你的应对思路是什么?比如新入职一个 C++ 岗,语言特性和你之前用的都不一样。

A:分有没有 AI 两种情况。不用 AI 时,先把问题的范围问清楚——涉及哪些方面、哪些代码、哪些工作,然后自己去搜资料、学明白,工科的基本能力就是自己发现问题、自己解决问题;如果确实看不懂,先去问给我这个问题的人,因为派任务的人一般更清楚背景;如果对方不是技术人员、只是管理者,就去找同岗位的同事或前辈请教。能用 AI 时,先问 AI,多数问题它能讲清楚;遇到概念本身晦涩、不好理解的,再找前辈同事帮忙,用他们习惯的比喻把这层概念翻译一遍。以上是我日常学习的两条路径。

六、反问环节

Q17 想请教一下,贵司做 3D 相关的工作,主要是开发三维程序吗?这个岗位具体做什么?

A:这个部门以工程造价为主要应用场景,属于建筑领域的软件服务商。业务流程是:设计院先把建筑方案化成 CAD 图纸,软件再把二维图纸转成三维模型,算墙的长度、混凝土量、钢筋量、窗户数量,因为三维更接近现实,算量更清晰。过程中大量用到智能识别:比如在一张图纸上选中两根线,就能把图上所有墙识别出来转成墙体;如果拿到的是 PDF 或图片类图纸,还会用 AI 做逆向建模,涉及多模态技术,把它变成能算量的几何模型。

Q18 除了算法和多模态,还会用到哪些技术或工具?听说用到 QT?

A:前端是装在 Windows 上的桌面软件,界面部分用 QT,菜单、Ribbon 入口、管理树、管理表都由 QT 呈现;几何显示由自己的图形库和图形引擎完成。

Q19 贵司在西安的办公地点在哪个区域?

A:在城北经开区,紧邻北三环。

本篇目录
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06
  7. 07
  8. 08
  9. 09
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
    遇到全新领域、自己没掌握的知识,你的应对思路是什么?比如新入职一个 C++ 岗,语言特性和你之前用的都不一样。
  17. 17
    反问
    想请教一下,贵司做 3D 相关的工作,主要是开发三维程序吗?这个岗位具体做什么?
  18. 18
  19. 19

同作者面经

相关公司