小米二面面经

昨天刚刚面完小米二面,一面的面经由于没有及时整理,所以记得的不多,就把自己印象深刻的记下来了……_§:з)))」∠)_

二面大概一个多小时的样子,涉及的知识面比较广,刚开始就先来了两道算法题……_§:з)))」∠)_,不过还OK,比较常规的那种。下面就把这次面试中问到的问题整理了一下~  希望对要面试的小伙伴有帮助✧٩(ˊωˋ*)و✧

(博主有的问题写了回答的思路,其他没有的,问问度娘基本都能找到,就不放具体的博客链接了~)

算法题:

1、给定一个数组,以及一个值sum,求数组中两个数相加为sum的值有哪些?

方法1:先快排,使得数组有序;然后变量i,j分别从左右两边遍历,当和值为sum时,就找到了;当和值大于sum的时候,j--;当和值小于sum的时候,i++………直到

i==j,结束循环。

方法2:利用hash表的特性,将数组值存放在hash表中,i从头遍历,每遍历到一个数, 都用sum减去该数,得到差值后,查找这个hash表中是否存在,如果存在,就找到了;如果不等于的话,i++;依次判断,直到判断到倒数第二个数的时候。

2、判断一个数是不是2的幂次方?

思路:(num&num-1)==0

数据库:

1、索引的底层数据结构是什么?特点?(B+树)

2、为什么不使用其他的数据结构来代替?(涉及到内存预读)

3、有没有使用过联合索引?最左前缀原则及情景题

4、项目中如何防止查询返回大量数据?(limit)

5、情景题写sql语句——

①统计一个表中type字段下的元素的种类——

select count(*) from 表名 group by type;

②去掉type字段下的重复数据——

select distinct type from 表名;

6、redis数据存储在哪?采用单线程还是多线程?(内存,单线程)

7、为什么redis采用单线程,速度还是很快呢?

Git:

1、Git提交的命令?(add及commit)为什么要先add (暂存区)

2、合并到远程分支的命令?

基础题:

1、==和equals的区别?

2、抽象类和接口的区别?

3、java中异常的分类,以及常见的异常?

4、重载和重写区别?

计算机网络:

1、从网页输入一个url,到出现页面的整个过程?描述一下

2、常见的http状态码,以及含义?

操作系统:

1、有没有使用过linux?了解哪些常用命令?

线程:

1、start方法和run方法的作用及区别?

框架及项目:

1、依赖注入的方式有什么? (手动装配和自动装配)

依赖注入方式:手动装配 和 自动装配

①手动装配:一般进行配置信息都采用手动

基于 xml 装配:构造方法、setter 方法

基于注解装配:

②自动装配:struts 和 spring 整合可以自动装配

byType:按类型装配

byName:按名称装配

constructor 构造装配,

auto: 不确定装配

2、为什么要使用maven?

3、项目中在使用spring框架的过程中,有哪些让你印象深刻的地方?

4、前后端使用json传递数据

5、整个项目的流程,任务分配?

6、邮箱验证,支付模块,购物车模块如何实现的?

7、订单模块的生成、订单状态的不同情况及流程,定时器?

8、使用过的日志框架?(log4j)还知道什么其他的?

9、xml文件中,SQL语句上的id里面的内容是什么?(对应的方法名)

 

好啦,差不多就是这些,面试加油!

 

 

<think>好的,我现在需要帮用户整理关于小米汽车C++相关的试经验。根据用户提供的参考引用,有三个引用内容需要结合进去。首先,引用[1]提到准备智能驾驶算法方向的试项目,比如自动驾驶模拟器,这可能涉及到C++在算法实现中的应用。引用[2]提到了OTA互测试工程师的职位,虽然主要是测试,但可能需要C++的基础。引用[3]则是编程题示例,涉及算法和数据结构,这对于C++岗位的试尤为重要。 用户的需求是了解小米汽车C++试经验,所以需要综合这些信息。首先,我需要确小米汽车C++岗位可能考察的重点,包括技术试内容、编程题类型以及项目经验要求。然后,结合引用中的内容,比如项目建议和编程题例子,给出具体的准备建议。 接下来,我应该分步骤整理回答。首先,技术试部分可能涉及C++基础、智能驾驶相关技术、算法和数据结构。然后,编程题方,引用[3]提供了一个装箱问题的例子,需要详细解析这类题目的解题思路。项目经验部分,引用[1]建议的自动驾驶模拟器项目可以作为参考,说明如何结合C++进行开发。此外,引用[2]提到的测试经验虽然属于不同职位,但可能对理解团队协作有帮助。 同时,需要确保回答结构清晰,符合用户要求的层次结构,比如分点列出技术重点、编程题解析、项目准备等。此外,还要注意用户提到的LaTeX格式要求,确保数学表达式正确使用$...$和$$...$$。例如,在算法复杂度分析时,使用$O(n \log n)$这样的格式。 可能的问题点包括:是否所有引用内容都相关?引用[2]关于测试工程师的信息是否适用于C++开发岗位?可能需要说明虽然主要职位不同,但测试经验可能对理解整个开发流程有帮助,尤其是OTA升级相关的部分,可能涉及C++代码的测试。 最后,生成相关问题部分需要围绕用户可能进一步询问的内容,比如具体编程题解析、项目细节或算法优化方法。确保问题与之前的回答内容紧密相关,帮助用户深入探索。</think>### 小米汽车 C++ 试经验整理 #### 1. **技术试重点** - **C++ 基础** - 必考内容:多态实现机制(虚函数表)、智能指针(`shared_ptr`/`unique_ptr`)、STL容器底层原理(如`vector`扩容机制、红黑树在`map`中的应用)、移动语义与完美转发[^1]。 - 示例问题: *如何用 C++11 实现线程安全的单例模式?* *`std::vector`的`push_back`时间复杂度分析?* - **智能驾驶相关技术** - 涉及算法:路径规划(A*、Dijkstra)、传感器数据处理(点云滤波、卡尔曼滤波)、实时系统设计(优先级调度)。 - 数学基础:线性代数(矩阵变换)、微积分(运动学模型),例如车辆运动方程可表示为: $$s(t) = s_0 + v_0 t + \frac{1}{2} a t^2$$ - **算法与数据结构** - 高频题目:动态规划(背包问题)、图算法(拓扑排序)、二叉树遍历(非递归实现)[^3]。 #### 2. **编程题解析(参考引用[3])** **题目示例**:装箱问题 **输入**:箱子容量 $N$,玩具数量 $n$,填充物数量 $c$,玩具大小数组 $a[1..n]$ **目标**:判断是否能用玩具和填充物(单个大小为1)恰好填满箱子。 **解题思路**: 1. **动态规划**:义状态 $dp[i][j]$ 表示前 $i$ 个玩具使用 $j$ 个填充物时的最大填充值。 2. **状态转移**: $$dp[i][j] = \max(dp[i-1][j], dp[i-1][j - a[i]] + a[i])$$ 约束条件:$j \geq a[i]$ 3. **判断条件**:存在 $j \leq c$ 使得 $dp[n][j] + (c - j) \geq N$ ```cpp bool canFill(int N, int n, int c, vector<int>& a) { vector<int> dp(c + 1, 0); for (int num : a) { for (int j = c; j >= num; j--) { dp[j] = max(dp[j], dp[j - num] + num); } } return (dp[c] + (c - dp[c]) >= N); } ``` #### 3. **项目经验建议(参考引用[1])** - **自动驾驶模拟器开发** - 技术栈:C++17、ROS2(机器人操作系统)、Gazebo 仿真环境。 - 核心功能: - 车辆动力学模型:使用欧拉法数值积分实现,如: $$v_{t+1} = v_t + a \cdot \Delta t$$ - 传感器模拟(激光雷达点云生成) - 成果指标:将路径规划算法延迟从 $50ms$ 优化至 $20ms$(通过引入内存池管理点云数据)。 #### 4. **试流程特点** - **交叉提问**:例如在解释虚函数时,可能追问:“虚函数表在多重继承中的内存布局?” - **场景设计**:如“设计一个支持高并发的车辆状态上报系统”(需结合生产者-消费者模型、无锁队列优化)[^2]。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值