校招 未知部门 / 硬件工程师 / 一面
[面试日期] 2024-04-24 [面试时长] 未知
[学校背景] 吉林大学 | 985 [学历背景] 未知
[发布人] 面试之星官方收录
<h2>极氪 - 嵌入式软件开发 - 一面</h2>
<p>全程面试一小时四十分钟,两个面试官轮番上阵,部门主要做车端底层软件和中间件。面试难度整体不大,主要深挖在蔚来的实习项目,八股问题相对常见,无奈问题量很大,最后已经很疲劳了。</p><p>Intern & ourea_app:</p><ul><li>介绍一下 cgroup 原理及其难点</li><li>项目需要加载哪些配置文件</li><li>懒汉和饿汉单例模式有什么区别</li><li>为什么项目使用懒汉单例(看起来饿汉单例更合适)</li><li>还了解哪些设计模式(单例、工厂、装饰者)</li><li>如果一个 app CPU 占用率超过限定值,cgroup 是如何进行限制的,服务会被 kill 掉吗?</li><li>如何解析 coredump(minidump)</li><li>minidump 解析原理是什么</li><li>使用 perf 进行性能分析,如何生成火焰图?能否实时生成火焰图?</li></ul><p>OS:</p><ul><li>select 和 epoll 的区别</li><li>实现一个线程池分为哪些步骤</li><li>互斥锁和自旋锁的区别</li></ul><p>Network:</p><ul><li>TCP 和 UDP 的区别</li><li>介绍一下 TCP 四次挥手</li><li>为什么需要 TIME_WAIT 状态</li><li>TIME_WAIT 时间是多长(2MSL)</li></ul><p>C++:</p><ul><li>多态实现原理</li><li>虚函数表是在什么时候创建的</li><li>从编译器角度来看、静态多态(函数重载)原理是什么</li><li>STL vector 中 <code>push_back</code> 和 <code>emplace_back</code> 的区别</li><li>map 和 unordered_map 的区别、以及适用场景</li><li>如何使 Map 中的 Key 按照自定义规则排序</li><li><code>#include <></code> 和 <code>""</code> 的区别</li><li>深拷贝和浅拷贝的区别</li><li><code>strcpy</code> 会造成什么安全问题</li><li><code>strcpy</code> 和 <code>memcpy</code> 的区别</li><li>使用 <code>memcpy</code> 会造成哪些隐患</li><li><code>memcpy</code> 和 <code>memmove</code> 的区别</li><li>delete 能否用于释放整型变量</li><li><code>fork</code> 和 <code>vfork</code> 的区别</li></ul><p>LeetCode:</p><ul><li>实现一个简单的 <code>string</code> 类</li></ul><pre>
#include <iostream>
#include <vector>
#include <string.h>
#include <stdio.h>
using namespace std;
class MyString {
public:
MyString() : _data(nullptr), _len(0) {}
MyString(const char* str) {
if (str) {
_len = strlen(str);
_data = new char[_len + 1];
strcpy(_data, str);
} else {
_len = 0;
_data = nullptr;
}
}
MyString(const MyString& other) {
_len = other._len;
_data = new char[_len + 1];
strcpy(_data, other._data);
}
MyString& operator=(const MyString& other) {
if (this != &other) {
delete[] _data;
_len = other._len;
_data = new char[_len + 1];
strcpy(_data, other._data); // deep copy
}
return *this;
}
MyString& operator+=(const MyString& other) {
int new_len = _len + other._len;
char* new_data = new char[new_len + 1];
strcpy(new_data, _data);
strcat(new_data, other._data);
delete[] _data;
_len = new_len;
_data = new_data;
return *this;
}
bool operator==(const MyString& other) {
if (_len != other._len) {
return false;
}
return strcmp(_data, other._data);
}
~MyString() {
delete[] _data;
_len = 0;
}
private:
char* _data;
int _len;
};
</pre><a>#面经#</a><a>#软件开发2024笔面经#</a>
AI 推荐面试题
