武汉简历挂,转投北京进面
一面0807
一个小时,累死了,人麻了
体验不太好,问的很广
多进程相关,为什么不用多线程
多线程能否进行多核运算
项目里面稍微复杂一点的代码逻辑
答了状态机
用的比较多的数据结构
iic驱动程序是操作的gpio口还是调用的接口
对于32的使用做到了哪一步
讲一下实习的工作
答 得 稀 烂!!!
写过多少C++的代码
宏定义和内联函数的区别
答了宏定义不检查语法
malloc和new的区别
答了malloc返回的是一个void指针,new含有数据类型的指针,会调用构造函数
说一下对虚函数的理解
左值和右值
答了左值是实际的变量,右值时临时的变量如函数返回值
左值引用和右值引用都减小了拷贝的开销
对完美转发的理解
对设计模式的了解
对智能指针的理解
智能指针是否是线程安全的
对static的理解
项目里面是否使用过封装继承多态的特性
讲一下容器的迭代器失效
linux常用的一些指令
对内存管理的理解
当前的linux系统还是使用的段页式吗
不同的进程malloc的时候怎么保证申请的是自己内存空间
讲一下多线程和多进程的区别
有没有碰到过内存泄漏的问题
查内存泄漏使用的工具
手撕升序数组中第一个出现的目标数
时间复杂度logn
#include<vector>
#include <iostream>
using namespace std;
int main(){
vector<int> array = {1,1,2,3,3,3,4,5,6,7};
int target = 3;
int l = 0;
int r = array.size()-1;
int mid = (l+r)/2;
bool find = false;
int ans = -1;
while(l<=r){
if(array[l]==target){
ans = l;
find = true;
break;
}
if(array[mid]<target){
l = mid+1;
}
else if(array[mid]>=target){
r = mid-1;
}
if(array[mid]==target&&array[r]!=target){
ans = mid;
find = true;
break;
}
mid = (l+r)/2;
}
if(!find){
cout<<-1;
system("pause");
return -1;
}
// for(int i = mid;i>=0;i--){
// if(array[i]==target&&i==0){
// ans = 0;
// break;
// }
// else if(array[i]!=target){
// ans = i+1;
// break;
// }
// }
cout<<ans;
system("pause");
return 0;
}
换岗复活
讲项目
对深度学习的理解
图像处理部分的多核并行计算解释一下
进程之间的交互怎么实现的
多进程如果做多进程对同一块内存空间的读写
答了锁
对死锁的理解
是否了解自旋锁
智能指针中shared_ptr和unique_ptr的区别
unique_ptr拒绝什么操作
对多态的理解
重定义、重载和覆盖的区别
手撕二分
#include<iostream>
#include<vector>
using namespace std;
int main() {
vector<int> arr{3,4,5,6,7,9,0,1,2};
int tar = 0;
int l =0;
int r = arr.size()-1;
int mid = (l+r)/2;
int res=-1;
while(l<=r){
if(arr[mid]==tar){
res = mid;
break;
}
else if(arr[mid]>tar){
if(arr[l]>=tar){
l = mid+1;
}
else{
r = mid-1;
}
}
else if(arr[mid]<tar){
if(arr[r]>=tar){
l = mid+1;
}
else{
r = mid-1;
}
}
mid = (l+r)/2;
}
std::cout << res << std::endl;
system("pause");
return 0;
}
他真的好喜欢二分