博世-智能座艙-軟件開發(fā)工程師-xc一面
全程中文問答。
一小時(shí),四五個(gè)沒答出來(lái),所以應(yīng)該掛了。#牛客AI配圖神器#
提問包括但不限于:
1. new/malloc區(qū)別? 答,**但是new重載這一塊模糊**。
2. 說(shuō)說(shuō)智能指針? 共享指針引用計(jì)數(shù)、獨(dú)占指針刪除copy 構(gòu)造/賦值運(yùn)算符,weak_ptr 解決循環(huán)引用。常規(guī)的答的還行。
3. vector,刪除指定值的元素(例如5和6)。 考這個(gè)原因是迭代器失效?
4. 問了gdb的指令,比如準(zhǔn)備用gdb,gcc加什么選項(xiàng),-O3和-g可以一起使用嗎? 如何查看線程?如何判斷xx文件可以用gdb調(diào)試呢?大部分沒答出來(lái)。
5. 實(shí)現(xiàn)單例,但是被問懵了,問我析構(gòu)函數(shù)為什么是私有? 于是我又把它改成公有,本質(zhì)還是不知所以然。查了一下gpt,回答
"
在 get() 方法中,使用了靜態(tài)局部變量(static Singleton instance;),
C++ 規(guī)定:
? 靜態(tài)局部變量在程序退出時(shí)會(huì)自動(dòng)析構(gòu),因此不需要顯式釋放。
? C++11 以后,靜態(tài)局部變量的初始化是線程安全的,不會(huì)引起并發(fā)問題。
所以,我們不需要提供手動(dòng)的析構(gòu)方式。
"
6. 深拷貝/淺拷貝。
7. 你認(rèn)為拿得出手的模塊實(shí)現(xiàn)?然后扣細(xì)節(jié),最后也被扣懵了。
```
#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
一小時(shí),四五個(gè)沒答出來(lái),所以應(yīng)該掛了。#牛客AI配圖神器#
提問包括但不限于:
1. new/malloc區(qū)別? 答,**但是new重載這一塊模糊**。
2. 說(shuō)說(shuō)智能指針? 共享指針引用計(jì)數(shù)、獨(dú)占指針刪除copy 構(gòu)造/賦值運(yùn)算符,weak_ptr 解決循環(huán)引用。常規(guī)的答的還行。
3. vector,刪除指定值的元素(例如5和6)。 考這個(gè)原因是迭代器失效?
4. 問了gdb的指令,比如準(zhǔn)備用gdb,gcc加什么選項(xiàng),-O3和-g可以一起使用嗎? 如何查看線程?如何判斷xx文件可以用gdb調(diào)試呢?大部分沒答出來(lái)。
5. 實(shí)現(xiàn)單例,但是被問懵了,問我析構(gòu)函數(shù)為什么是私有? 于是我又把它改成公有,本質(zhì)還是不知所以然。查了一下gpt,回答
"
在 get() 方法中,使用了靜態(tài)局部變量(static Singleton instance;),
C++ 規(guī)定:
? 靜態(tài)局部變量在程序退出時(shí)會(huì)自動(dòng)析構(gòu),因此不需要顯式釋放。
? C++11 以后,靜態(tài)局部變量的初始化是線程安全的,不會(huì)引起并發(fā)問題。
所以,我們不需要提供手動(dòng)的析構(gòu)方式。
"
6. 深拷貝/淺拷貝。
7. 你認(rèn)為拿得出手的模塊實(shí)現(xiàn)?然后扣細(xì)節(jié),最后也被扣懵了。
```
#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
全部評(píng)論
我也是這個(gè)崗位,也是最近面的
mark了感覺問的還行沒有特別拷打的感覺
查了一下,vector刪除那個(gè)最優(yōu)雅的方式是用 erase + remove_if: " vec.erase(remove_if(vec.begin(), vec.end(), [](int x) {
return x == 5 || x == 6;
}), vec.end());
"
相關(guān)推薦
點(diǎn)贊 評(píng)論 收藏
分享
點(diǎn)贊 評(píng)論 收藏
分享
昨天 12:14
門頭溝學(xué)院 機(jī)器學(xué)習(xí) 點(diǎn)贊 評(píng)論 收藏
分享

點(diǎn)贊 評(píng)論 收藏
分享