极氪 - 嵌入式软件开发 - 一面

全程面试一小时四十分钟,两个面试官轮番上阵,部门主要做车端底层软件和中间件。面试难度整体不大,主要深挖在蔚来的实习项目,八股问题相对常见,无奈问题量很大,最后已经很疲劳了。

Intern & ourea_app:

  • 介绍一下 cgroup 原理及其难点
  • 项目需要加载哪些配置文件
  • 懒汉和饿汉单例模式有什么区别
  • 为什么项目使用懒汉单例(看起来饿汉单例更合适)
  • 还了解哪些设计模式(单例、工厂、装饰者)
  • 如果一个 app CPU 占用率超过限定值,cgroup 是如何进行限制的,服务会被 kill 掉吗?
  • 如何解析 coredump(minidump)
  • minidump 解析原理是什么
  • 使用 perf 进行性能分析,如何生成火焰图?能否实时生成火焰图?

OS:

  • select 和 epoll 的区别
  • 实现一个线程池分为哪些步骤
  • 互斥锁和自旋锁的区别

Network:

  • TCP 和 UDP 的区别
  • 介绍一下 TCP 四次挥手
  • 为什么需要 TIME_WAIT 状态
  • TIME_WAIT 时间是多长(2MSL)

C++:

  • 多态实现原理
  • 虚函数表是在什么时候创建的
  • 从编译器角度来看、静态多态(函数重载)原理是什么
  • STL vector 中 push_backemplace_back 的区别
  • map 和 unordered_map 的区别、以及适用场景
  • 如何使 Map 中的 Key 按照自定义规则排序
  • #include <>"" 的区别
  • 深拷贝和浅拷贝的区别
  • strcpy 会造成什么安全问题
  • strcpymemcpy 的区别
  • 使用 memcpy 会造成哪些隐患
  • memcpymemmove 的区别
  • delete 能否用于释放整型变量
  • forkvfork 的区别

LeetCode:

  • 实现一个简单的 string
#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;
};
#面经##软件开发2024笔面经#
全部评论
实习吗?
1
送花
回复 分享
发布于 04-27 17:29 上海
部门做底软的 问的很底层 还问我看没看过 Linux 源码
点赞
送花
回复 分享
发布于 04-24 16:51 辽宁
秋招专场
校招火热招聘中
官网直投
我超你咋彩名了
点赞
送花
回复 分享
发布于 04-25 13:37 辽宁
难绷 挂了 泡了好久好久 想不明白是咋挂的
点赞
送花
回复 分享
发布于 05-21 09:44 吉林

相关推荐

自我介绍项目经历提问1.rm赛事经历。人数。详细介绍具体做了什么。电机怎么控制。pid自己设计的吗,怎么调试。使用c还是c++?使用混编。混编遇到了什么问题?&nbsp;extern2.6.828&nbsp;内存管理实现的思路。怎么给进程分配页。3.用过什么版本的c++&nbsp;&nbsp;&nbsp;&nbsp;c++11比较多3.说一下你用过的c++11新特性auto&nbsp;智能指针&nbsp;4.讲一下智能指针?5.用过哪些智能指针?unique&nbsp;shared6.这两个智能指针有什么区别7.左值引用和右值引用的区别8.c++怎么实现多态?9.当一个子类以父类形式存在,他怎么知道调用哪个函数(没懂,解释怎么找到对应函数?还是不会,说了知道虚函数怎么调用的)10.那虚函数的怎么实现&nbsp;虚函数表11.为什么基类析构要用virtual12.构造和析构的顺序(子类和父类顺序)13.知道为什么是这个顺序吗&nbsp;&nbsp;&nbsp;子类和父类存在时间的问题(寄)14.用哪些容器&nbsp;&nbsp;&nbsp;set&nbsp;unordered&nbsp;set&nbsp;/map&nbsp;unordered&nbsp;map15.讲一下set和map的区别16.知道他们的底层实现吗&nbsp;&nbsp;答了红黑树17.知道红黑树的特性吗&nbsp;&nbsp;(只知道平衡二叉树,不了解其他的特性。(查找树,不是一个完美的平衡二叉树)(寄))18.题目实现:一个数组,只有两个数字不是成对存在。一开始以为数组不全部乱序,用双指针。面试官说了后,重新想。用set记录,找到存进去,下次找到删掉。最后剩下的就是不配对的。19.想一下用位运算可以怎么实现呢(寄&nbsp;完全不会)20.反问环节问6.828项目的时候,发现自己不是很熟。😭没反应过来,面试官解释后,答了一点,但不是很对。c++底层也不是很会,感觉要寄😅一直问我能不能再早点到岗。一问待遇200一天&nbsp;一个月900补贴。不包吃住。在上海,离谱了。
查看18道真题和解析
点赞 评论 收藏
分享
13 65 评论
分享
牛客网
牛客企业服务