星猿哲 二面 70分钟
自我介绍
介绍一下项目
算法怎样加速的, 做了哪些加速
求职方向和职业规划
展示一下做过的项目成果
段错误
内存泄露
系统内存不够怎么办 (没思路 瞎答的)
首先 要看是什么内存不够
如果是栈空间内存不够的话 查下代码逻辑有没有bug, 例如循环实例化和无限递归, 然后可以在编译器的设置中增大栈空间
如果是堆内存不够的话 看有没有循环new和内存泄露 换64位 还不够的话 换电脑吧 抠搜的
怎么少写bug
- 勾勒大概的项目框架
- unit test 对每个模块进行测试
- 重视IDE的警告 比如常出现的 usinged int 和int的强转
- 良好的命名规范等编码习惯
gdb调试
基本的指令了解 但是平时比较依赖IDE封装好的编译工具 windows下使用vstudio linux使用clion
你用的什么编译器
shared_ptr和unique_ptr
聊一下四种cast转换
命名规范
google规范 平时缩进也会使用clang-format对代码进行调整
opencv了解吗
常规的传统图像算法基本了解 学过
平时感觉比较好用的就是opencv二维矩阵插值 还有一些图像简单处理和拼接函数
==循环展开==了解吗
循环展开式编译器在预编译阶段对循环操作进行的优化 , 比如一个数据要进行一万次的累加, 那么不如一个循环内累加多次 或者使用将计算分为两个数 分别对奇数和偶数位进行累加 最后合并
//关闭编译器优化 测试循环展开的优化 int sum= 0; int count= 10000; //循环10000次累加 for(int i= 0;i< count;i++){ sum+= i; } //0.0000279s for(int i = 0;i < count;i += 2){ sum += i; sum += i+1; } //0.0000159s int sum1=0,sum2=0; for(int i=0;i < count;i+=2){ sum1 += i; sum2 += i+1; } sum = sum1 + sum2; //0.0000073s
Unit Test了解吗
==SSE指令集==
繁重计算导致界面卡死怎么办
计算卡死用户怎么终止, 或者黑盒子函数卡死, 怎么终止它
套接字使用过吗
还有什么想问的
刷道题, 返回边长1-m可以构成的三角形种类数 (写的好拉)
#面经#面评:
Unit Test,Design Principle会需要加强;有点太依赖Windows环境和VS的IDE,有机会能力可以再提升