经纬恒润一面、笔试准备
一、面经准备:
1、static关键词:静态局部变量仅作用于代码段;静态全局变量仅作用于文件内部;静态成员函数仅通过类名调用;静态成员变量,类外初始化;静态线程局部变量;
2、虚析构函数:用于基类指针删除派生类对象时,正确调用派生类的析构,维持多态的正常运行;
3、动态绑定:晚绑定,运行绑定而不是编译绑定,虚函数的使用时,在基类指针或引用调用虚函数会发生动态绑定;编译器仅进行类型检查,然后创建虚函数表,在调用虚函数时动态绑定虚函数表;构造函数往往不是虚函数;
4、自定数据结构怎么传函数:函数指针、函数对象、仿函数、lambda表达式;
5、为什么函数传参要传引用/const引用:值传递会拷贝,效率低;引用传递为别名,可以修改原值;const则可以避免不必要的修改;
6、静态方法是否可以访问类成员变量:静态方法不能直接访问非静态成员变量,因为非静态成员变量与实例绑定;
7、指针常量与常量指针:指针常量不可变的是指针,指针的值是可变的;常量指针,不可变的是常量,指针的指向是可以变的;
8、vector有哪些插入元素的操作,具体操作复杂度和底层发生了什么:push_back(超过容量则自动分配更大的内存块然后全部复制过去)、emplace_back(末尾构建新元素,同样存在超容分配新的内存块)、insert(在制定迭代器位置插入)
9、vector一个元素一个元素放入的过程中会发生什么:首先会初始化,然后检查容量,容量不足会重新分配内存,然后会更新迭代器、指针和引用;
10、常用激活函数特点:sigmoid(01之间、平滑、梯度消失、不以0为中心、指数运算量大)、tanh(+-1之间、梯度消失、指数运算)、relu(没有梯度消失、稀疏、计算简单、dead relu)、leaky-relu(不会dead)、softmax(多分类输出)、swish(收敛比relu快、指数运算)、gelu(平衡、计算量大)
11、各种注意力机制介绍:聚焦式注意力、显著性注意力、多头注意力、硬注意力、软注意力、键值对注意力、结构化注意力;应用于NLP、CV、语言识别;比CNN具有动态性和适应性,提高模型性能,具有可扩展性和鲁棒性
12、函数重载:同名函数不同输入参数列表,编译时多态;
13、函数重写:继承关系的类之间,虚函数的重写,运行时多态;
14、C++结构体和联合体的区别:struct结构成员独占内存,union联合体共享一块内存;
15、ResNet网络特点:残差结构、恒等映射、超级深度、BN、
16、YOLO系列网络特点:滑动窗口、分类与回归、多尺度预测、
17、EfficientNet网络特点:深度可分离卷积
18、GPU之间的数据传输:pcie总线实现GPU数据传输,CUDA并行计算,NVLink互联技术、分布式技术
19、C++新特性:左值(通常变量、返回值都是可引用的左值)右值(&&,允许函数接收并操作的临时对象,配合移动语义使用),智能指针(unique_ptr独占指针:对象随指针销毁而销毁、shared_ptr共享指针:多实例共享对象,最后一个指针销毁时销毁、weak_ptr弱指针:共享指针在循环时的应用)
20、堆和栈的区别:数据结构上栈后入先出,堆则为完全二叉树;内存分配上,栈为操作系统自动分配,编译时确定,内存连续速度快,用于函数调用、局部变量,只能访问栈顶,堆为程序员手动申请或释放,用来存放实例化的内容,堆可以任意位置访问;
21、死锁原因和必要条件以及死锁的解除方式:死锁是多线程或进程的资源争夺;必要条件:资源被一个进程或线程锁定;解除方法:挂起、强制撤销、回退进程
22、unordered map和map的区别以及其实现原理:map是红黑树,自平衡的二叉查找树,插删查的时间复杂度为logn,unordered map是哈希表,时间复杂度为1-n
23、动态链接和静态链接的区别:静态链接:编译时嵌入,独立性强,执行速度快,体积大,内存浪费,更新困难;动态链接:运行时加载,节约内存,便于更新,扩展性强,依赖外部库,有一定性能开销
24、有大量数据要处理,如何加快处理速度(IO密集型和CPU密集型):IO密集:异步IO、多线程/多进程、缓存技术、批处理;CPU密集型:并行计算、算法与数据结构优化、指令集硬件加速、分布式计算、编译优化
25、git如何合并远程分支:git fetch获取远程分支、git switch切换分支、git merge合并分支、git push推送结果
26、两个旋转框的IOU计算方法:获取旋转框xywh和角度,计算旋转多边形顶点坐标,计算交集多边形,计算交并集面积,cv2提供了旋转框iou的计算方法:cv2.rotatedRectangleIntersection
27、怎么理解DETR中query的作用:模型输入输出的桥梁,每个输出位置分配一个query,用于匹配特征图与提取区域,实现无anchor和无nms
28、快速排序:将序列分治为大子序列和小子序列,然后递归排序两个子序列
29、手写nms:计算iou,去掉与最高置信度iou大的边界框
30、n个苹果放入m个篮子,要求随便取1-n个苹果,都能取出来,问最少用几个篮子:log2(n+1)向上取整
31、从模型和数据的角度分别说一下如何解决梯度爆炸的问题:模型:权重初始化、梯度裁剪、BN、使用残差网络、使用adam、sgd优化器、权重正则化;数据:标注化数据、特征旋转、数据预处理
32、yolo中是怎么解决正负样本不均衡问题的:iou比较正负样本、多种损失函数、数据增强、随机采样、类别权重、object置信度分数预测
33、BN层的作用是什么,有什么可学习参数:归一化,加速训练和收敛、防止梯度爆炸和消失、防止过拟合;可学习gamma和beta匹配均值和方差;
34、给定NCHW的输入,BN层的输出应该是什么:维度还是nchw,只是hw进行了归一化
35、在训模型的时候如果遇到显存占用了,但是后面的GPU利用率不高的情况,可能是因为什么:CPU跟不上、Batchsize太小、计算复杂性低、数据同步、io瓶颈、显存不足、优化器效率低、模型并行差
36、在训模型的时候如果loss报Nan了,可能是因为什么:学习率太高、参数初始化错误、梯度消失/爆炸、数据不稳定/有问题、模型结构问题、优化器或正则化问题、框架或库出错
37、Detr是怎么做到不用nms的,如何保证在一个目标附近只生成一个bbox:transformer机制下仅输出一个query;
二、笔试准备
1、构造函数:自动执行、初始化对象、面向对象、名称与类名相同、没有返回类型、自动调用、可以有多个,参数列表不同(重载)、可以显式调用
2、析构函数:结束时调用、清理操作、名称特殊~、无参数、无返回类型、自动调用、只能有一个
3、运算符:算术、关系、逻辑、赋值、位操作:位与 (&)位或 (|)位异或 (^)位非 (~)左移 (<<)右移 (>>)、成员访问: (.)(->)、条件运算符(三元运算符)、逗号运算符、作用域解析运算符 (::)、强制类型转换运算符
4、C++包含的关键字:控制语句关键字、数据类型关键字、存储类型关键字、类和对象相关关键字、异常处理关键字以及其他关键字
5、位运算:位与(AND)、位或(OR)、位异或(XOR)、位非(NOT,通常称为按位取反)、左移(Left Shift)和右移(Right Shift)
6、类的定义:面向对象,代码的模块化和重用性,创建具有相似属性和方法的不同对象
7、子类访问:公有可以访问、保护只能基类与派生类访问、私有不能访问;公有继承不变属性,保护继承全变保护,私有继承全变私有;
8、类成员访问修饰符之间的区别和应用:public全部可以访问、protected类外不可访问、private仅类内和友元;
9、白盒测试:通过检查软件系统内部的代码结构和逻辑来评估系统可靠性和效率的软件测试方法
10、支持RTT:实时测试工具
11、异常处理指令throw、catch、try:try 语句块用于包裹可能引发异常的代码;catch 语句块紧跟在 try 块之后,用于捕获并处理 try 块中抛出的异常;throw 关键字用于抛出一个用户自定义的异常或重新抛出捕获的异常;
1、static关键词:静态局部变量仅作用于代码段;静态全局变量仅作用于文件内部;静态成员函数仅通过类名调用;静态成员变量,类外初始化;静态线程局部变量;
2、虚析构函数:用于基类指针删除派生类对象时,正确调用派生类的析构,维持多态的正常运行;
3、动态绑定:晚绑定,运行绑定而不是编译绑定,虚函数的使用时,在基类指针或引用调用虚函数会发生动态绑定;编译器仅进行类型检查,然后创建虚函数表,在调用虚函数时动态绑定虚函数表;构造函数往往不是虚函数;
4、自定数据结构怎么传函数:函数指针、函数对象、仿函数、lambda表达式;
5、为什么函数传参要传引用/const引用:值传递会拷贝,效率低;引用传递为别名,可以修改原值;const则可以避免不必要的修改;
6、静态方法是否可以访问类成员变量:静态方法不能直接访问非静态成员变量,因为非静态成员变量与实例绑定;
7、指针常量与常量指针:指针常量不可变的是指针,指针的值是可变的;常量指针,不可变的是常量,指针的指向是可以变的;
8、vector有哪些插入元素的操作,具体操作复杂度和底层发生了什么:push_back(超过容量则自动分配更大的内存块然后全部复制过去)、emplace_back(末尾构建新元素,同样存在超容分配新的内存块)、insert(在制定迭代器位置插入)
9、vector一个元素一个元素放入的过程中会发生什么:首先会初始化,然后检查容量,容量不足会重新分配内存,然后会更新迭代器、指针和引用;
10、常用激活函数特点:sigmoid(01之间、平滑、梯度消失、不以0为中心、指数运算量大)、tanh(+-1之间、梯度消失、指数运算)、relu(没有梯度消失、稀疏、计算简单、dead relu)、leaky-relu(不会dead)、softmax(多分类输出)、swish(收敛比relu快、指数运算)、gelu(平衡、计算量大)
11、各种注意力机制介绍:聚焦式注意力、显著性注意力、多头注意力、硬注意力、软注意力、键值对注意力、结构化注意力;应用于NLP、CV、语言识别;比CNN具有动态性和适应性,提高模型性能,具有可扩展性和鲁棒性
12、函数重载:同名函数不同输入参数列表,编译时多态;
13、函数重写:继承关系的类之间,虚函数的重写,运行时多态;
14、C++结构体和联合体的区别:struct结构成员独占内存,union联合体共享一块内存;
15、ResNet网络特点:残差结构、恒等映射、超级深度、BN、
16、YOLO系列网络特点:滑动窗口、分类与回归、多尺度预测、
17、EfficientNet网络特点:深度可分离卷积
18、GPU之间的数据传输:pcie总线实现GPU数据传输,CUDA并行计算,NVLink互联技术、分布式技术
19、C++新特性:左值(通常变量、返回值都是可引用的左值)右值(&&,允许函数接收并操作的临时对象,配合移动语义使用),智能指针(unique_ptr独占指针:对象随指针销毁而销毁、shared_ptr共享指针:多实例共享对象,最后一个指针销毁时销毁、weak_ptr弱指针:共享指针在循环时的应用)
20、堆和栈的区别:数据结构上栈后入先出,堆则为完全二叉树;内存分配上,栈为操作系统自动分配,编译时确定,内存连续速度快,用于函数调用、局部变量,只能访问栈顶,堆为程序员手动申请或释放,用来存放实例化的内容,堆可以任意位置访问;
21、死锁原因和必要条件以及死锁的解除方式:死锁是多线程或进程的资源争夺;必要条件:资源被一个进程或线程锁定;解除方法:挂起、强制撤销、回退进程
22、unordered map和map的区别以及其实现原理:map是红黑树,自平衡的二叉查找树,插删查的时间复杂度为logn,unordered map是哈希表,时间复杂度为1-n
23、动态链接和静态链接的区别:静态链接:编译时嵌入,独立性强,执行速度快,体积大,内存浪费,更新困难;动态链接:运行时加载,节约内存,便于更新,扩展性强,依赖外部库,有一定性能开销
24、有大量数据要处理,如何加快处理速度(IO密集型和CPU密集型):IO密集:异步IO、多线程/多进程、缓存技术、批处理;CPU密集型:并行计算、算法与数据结构优化、指令集硬件加速、分布式计算、编译优化
25、git如何合并远程分支:git fetch获取远程分支、git switch切换分支、git merge合并分支、git push推送结果
26、两个旋转框的IOU计算方法:获取旋转框xywh和角度,计算旋转多边形顶点坐标,计算交集多边形,计算交并集面积,cv2提供了旋转框iou的计算方法:cv2.rotatedRectangleIntersection
27、怎么理解DETR中query的作用:模型输入输出的桥梁,每个输出位置分配一个query,用于匹配特征图与提取区域,实现无anchor和无nms
28、快速排序:将序列分治为大子序列和小子序列,然后递归排序两个子序列
29、手写nms:计算iou,去掉与最高置信度iou大的边界框
30、n个苹果放入m个篮子,要求随便取1-n个苹果,都能取出来,问最少用几个篮子:log2(n+1)向上取整
31、从模型和数据的角度分别说一下如何解决梯度爆炸的问题:模型:权重初始化、梯度裁剪、BN、使用残差网络、使用adam、sgd优化器、权重正则化;数据:标注化数据、特征旋转、数据预处理
32、yolo中是怎么解决正负样本不均衡问题的:iou比较正负样本、多种损失函数、数据增强、随机采样、类别权重、object置信度分数预测
33、BN层的作用是什么,有什么可学习参数:归一化,加速训练和收敛、防止梯度爆炸和消失、防止过拟合;可学习gamma和beta匹配均值和方差;
34、给定NCHW的输入,BN层的输出应该是什么:维度还是nchw,只是hw进行了归一化
35、在训模型的时候如果遇到显存占用了,但是后面的GPU利用率不高的情况,可能是因为什么:CPU跟不上、Batchsize太小、计算复杂性低、数据同步、io瓶颈、显存不足、优化器效率低、模型并行差
36、在训模型的时候如果loss报Nan了,可能是因为什么:学习率太高、参数初始化错误、梯度消失/爆炸、数据不稳定/有问题、模型结构问题、优化器或正则化问题、框架或库出错
37、Detr是怎么做到不用nms的,如何保证在一个目标附近只生成一个bbox:transformer机制下仅输出一个query;
二、笔试准备
1、构造函数:自动执行、初始化对象、面向对象、名称与类名相同、没有返回类型、自动调用、可以有多个,参数列表不同(重载)、可以显式调用
2、析构函数:结束时调用、清理操作、名称特殊~、无参数、无返回类型、自动调用、只能有一个
3、运算符:算术、关系、逻辑、赋值、位操作:位与 (&)位或 (|)位异或 (^)位非 (~)左移 (<<)右移 (>>)、成员访问: (.)(->)、条件运算符(三元运算符)、逗号运算符、作用域解析运算符 (::)、强制类型转换运算符
4、C++包含的关键字:控制语句关键字、数据类型关键字、存储类型关键字、类和对象相关关键字、异常处理关键字以及其他关键字
5、位运算:位与(AND)、位或(OR)、位异或(XOR)、位非(NOT,通常称为按位取反)、左移(Left Shift)和右移(Right Shift)
6、类的定义:面向对象,代码的模块化和重用性,创建具有相似属性和方法的不同对象
7、子类访问:公有可以访问、保护只能基类与派生类访问、私有不能访问;公有继承不变属性,保护继承全变保护,私有继承全变私有;
8、类成员访问修饰符之间的区别和应用:public全部可以访问、protected类外不可访问、private仅类内和友元;
9、白盒测试:通过检查软件系统内部的代码结构和逻辑来评估系统可靠性和效率的软件测试方法
10、支持RTT:实时测试工具
11、异常处理指令throw、catch、try:try 语句块用于包裹可能引发异常的代码;catch 语句块紧跟在 try 块之后,用于捕获并处理 try 块中抛出的异常;throw 关键字用于抛出一个用户自定义的异常或重新抛出捕获的异常;
全部评论
佬 一面问了这么多吗
佬,方便透露下你做的这是什么项目嘛?
相关推荐
11-11 14:29
博尔塔拉职业技术学院 Java 点赞 评论 收藏
分享