职位题库

软件开发工程师面试题库

面向软件开发工程师相关面试,围绕Java、问题解决、项目经验、Redis、数据库等主题展开练习,结合题目考察点、回答思路、参考答案和常见误区,梳理知识要点并练习清晰表达。

44 道题目建议用时 132 分钟专项面试练习

全部题目 44 道题

01

请介绍一下你自己。

考察候选人的表达能力、经历概括能力以及与岗位的匹配度。
02

简历上两个项目经验是什么背景下做的?是实验室项目吗?是否属于自学项目,没有实际应用背景?

核实项目背景的真实性,判断候选人的实际动手能力和项目复杂度。
03

session id 和 token 这两种用户登录解决方案,它们有什么本质上的区别?Redis 里存 session id 和存 token 有什么区别,是否都可以解决分布式 session 共享问题?

考察对会话管理和令牌认证机制的理解,以及分布式场景下的方案选型能力。
04

登录过期时间 30 分钟,用户在第 29 分钟操作一次,如何实现滑动过期?

考察对 Redis 过期机制和滑动窗口续期方案的设计能力。
05

请实现一个算法,计算连接所有节点的最小成本;如果无法连通,输出-1。

考察候选人是否掌握最小生成树问题的建模与实现,包括边权处理、连通性判断和无法连通时的边界处理。
06

给定一支股票每天的价格,设计算法计算可以获得的最大利润。你可以尽可能多地完成交易,但同一时间只能持有一支股票。

考察候选人对股票买卖问题的理解,能否识别贪心策略或动态规划状态转移,并正确处理多次交易。
07

在一个方阵地图中,给定若干炮弹的坐标和伤害,距离中心每远一格伤害减一,不同炮弹伤害可叠加。再给定飞机坐标和最小需要造成的伤害,判断能炸掉多少架飞机。

考察候选人能否将现实规则转化为二维网格上的伤害叠加计算,并正确遍历飞机坐标进行判定。
08

给定一组 (name, val) 记录,请先按 val 升序排序,val 相同时按 name 在原列表中的出现顺序排序,然后按指定格式输出流程字符串(以 start 开头、end 结尾;相同 val 的多个 name 需要先经过 fork_val 再经过 join_val)。请说明你的实现思路并写出关键代码。

考察多关键字排序的稳定性处理、分组逻辑以及按规则生成格式化输出的能力。
09

请说明类和结构体有什么区别?

考察对C++中class与struct在默认访问权限、继承权限、语义习惯等方面的理解,以及是否了解二者在语言层面的实际差异。
10

请说明重载和重写有什么区别?

考察对编译期多态(重载)和运行期多态(重写)的区分,以及是否理解虚函数、作用域、函数签名等概念。
11

在实习项目中,你提到使用了Gin框架,为什么选择Gin?请说明你在项目中负责的部分,并解释Go中有缓冲channel和无缓冲channel的区别。

考察候选人对Go语言特性、框架选型理由以及并发编程的理解,同时验证项目经验的真实性。
12

在项目一中,团队规模和分工是怎样的?这是个人项目还是实验室项目?核心工作是什么?为什么使用MQTT?模型是自己训练的吗?是端侧本地小模型吗?具体怎么做的?

深入考察项目的背景、技术选型理由、团队协作方式以及模型训练与部署细节,评估候选人的技术深度和项目参与度。
返回面试题库