博世-智能座舱-软件开发工程师-xc一面
全程中文问答。
一小时,四五个没答出来,所以应该挂了。#牛客AI配图神器#
提问包括但不限于:
1. new/malloc区别? 答,**但是new重载这一块模糊**。
2. 说说智能指针? 共享指针引用计数、独占指针删除copy 构造/赋值运算符,weak_ptr 解决循环引用。常规的答的还行。
3. vector,删除指定值的元素(例如5和6)。 考这个原因是迭代器失效?
4. 问了gdb的指令,比如准备用gdb,gcc加什么选项,-O3和-g可以一起使用吗? 如何查看线程?如何判断xx文件可以用gdb调试呢?大部分没答出来。
5. 实现单例,但是被问懵了,问我析构函数为什么是私有? 于是我又把它改成公有,本质还是不知所以然。查了一下gpt,回答
"
在 get() 方法中,使用了静态局部变量(static Singleton instance;),
C++ 规定:
• 静态局部变量在程序退出时会自动析构,因此不需要显式释放。
• C++11 以后,静态局部变量的初始化是线程安全的,不会引起并发问题。
所以,我们不需要提供手动的析构方式。
"
6. 深拷贝/浅拷贝。
7. 你认为拿得出手的模块实现?然后扣细节,最后也被扣懵了。
```
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3, 5, 6, 5, 7, 6};
int pos = 0;
int n = vec.size();
for (; pos < n;) {
if (vec[pos] == 5 || vec[pos] == 6) {
vec.erase(vec.begin() + pos);
n = vec.size();
}
else {
pos ++;
}
}
for (auto value : vec) {
cout << value << ' ';
}
}
```
```
class Singleton {
public:
static Singleton& get() {
static Singleton instance;
return instance;
}
int getValue() {
return value;
}
void setValue(int value_) {
value = value_;
}
private:
Singleton() = default;
~Singleton() = default;
int value;
};
int main() {
Singleton::get().setValue(42);
std::println("value={}", Singleton::get().getValue());
}
```
参考
1. https://en.wikipedia.org/wiki/Singleton_pattern
2. https://en.cppreference.com/w/cpp/language/storage_duration
3. https://stackoverflow.com/questions/15235526/the-static-keyword-and-its-various-uses-in-c
一小时,四五个没答出来,所以应该挂了。#牛客AI配图神器#
提问包括但不限于:
1. new/malloc区别? 答,**但是new重载这一块模糊**。
2. 说说智能指针? 共享指针引用计数、独占指针删除copy 构造/赋值运算符,weak_ptr 解决循环引用。常规的答的还行。
3. vector,删除指定值的元素(例如5和6)。 考这个原因是迭代器失效?
4. 问了gdb的指令,比如准备用gdb,gcc加什么选项,-O3和-g可以一起使用吗? 如何查看线程?如何判断xx文件可以用gdb调试呢?大部分没答出来。
5. 实现单例,但是被问懵了,问我析构函数为什么是私有? 于是我又把它改成公有,本质还是不知所以然。查了一下gpt,回答
"
在 get() 方法中,使用了静态局部变量(static Singleton instance;),
C++ 规定:
• 静态局部变量在程序退出时会自动析构,因此不需要显式释放。
• C++11 以后,静态局部变量的初始化是线程安全的,不会引起并发问题。
所以,我们不需要提供手动的析构方式。
"
6. 深拷贝/浅拷贝。
7. 你认为拿得出手的模块实现?然后扣细节,最后也被扣懵了。
```
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3, 5, 6, 5, 7, 6};
int pos = 0;
int n = vec.size();
for (; pos < n;) {
if (vec[pos] == 5 || vec[pos] == 6) {
vec.erase(vec.begin() + pos);
n = vec.size();
}
else {
pos ++;
}
}
for (auto value : vec) {
cout << value << ' ';
}
}
```
```
class Singleton {
public:
static Singleton& get() {
static Singleton instance;
return instance;
}
int getValue() {
return value;
}
void setValue(int value_) {
value = value_;
}
private:
Singleton() = default;
~Singleton() = default;
int value;
};
int main() {
Singleton::get().setValue(42);
std::println("value={}", Singleton::get().getValue());
}
```
参考
1. https://en.wikipedia.org/wiki/Singleton_pattern
2. https://en.cppreference.com/w/cpp/language/storage_duration
3. https://stackoverflow.com/questions/15235526/the-static-keyword-and-its-various-uses-in-c
全部评论
我也是这个岗位,也是最近面的
mark了感觉问的还行没有特别拷打的感觉
查了一下,vector删除那个最优雅的方式是用 erase + remove_if: " vec.erase(remove_if(vec.begin(), vec.end(), [](int x) {
return x == 5 || x == 6;
}), vec.end());
"
相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-30 08:52
广东食品药品职业学院 C++ 
点赞 评论 收藏
分享
07-03 21:43
上饶师范学院 前端工程师 Hakasee:我的简历和你的基本一样,上周去了上海,boss投了三百家,
三家线下面试
第一家没有做题,全是八股和项目,因为第一次面试不怎么熟练,挂了
第二家,给你几个题目(①css垂直居中文字,字体每两秒闪烁一下以及点击弹窗,②给你一个链接,实现可视化地图,③然后是八股,图片性能优化,以及对图片app有什么想法),45分钟内做完,然后老板面试)
第三家特别偏僻,有点阴森,到了之后让了一个工位给我,有四个题目,①格式化时间 年月日当前时间星期几② 正则表达式提取新闻文字,③在文本域输入文字生成选择题以及选项④生成商品排版还是什么来着
三家都是不超过50人的小公司
两家线上牛客笔试(卡伦特,七牛云,但是笔试不仅要考前端,还要考后端,算法,甚至数学题
我的建议是如果只做了这两个vue项目且不怎么熟练的情况下,先沉淀沉淀,把react学了,上海好的公司基本都是react
查看图片

点赞 评论 收藏
分享