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

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

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.问了C和C++一些基础的,问更了解C还是C++,我答的C++然后从C++切入问2.问了堆栈方面的内存分布堆空间&nbsp;栈空间&nbsp;分别存什么3.static的用途静态主要用途&nbsp;用在什么地方&nbsp;为了什么4.虚函数主要用在哪虚函数如何实现5.顺着虚函数问到多态的实现方式(虚函数,函数重载)6.网络编程流程服务器客户端流程:socket等等一系列7.多线程多进程编程8.实际中用过哪些多线程编程修昂目中有没有多进程多线程9.线程安全问题10.加过哪几种锁讲讲都在什么情况下加的锁(读写锁,互斥锁,自旋锁))11.linux静态库和动态库静态库动态库区别啥的12.IO复用select&nbsp;poll&nbsp;epoll13IIC相关阶段&nbsp;开始阶段&nbsp;三个阶段14arm寄存器都有哪些种之后就是和面试官聊天&nbsp;说学的是软件为什么想弄嵌入式等等问项目&nbsp;项目上我写的深度学习&nbsp;和&nbsp;网络编程多线程多进程相关的总体还是偏底层&nbsp;喜欢问实现原理&nbsp;底层原理补充;写的时候忘了&nbsp;之后突然想起来&nbsp;还问了&nbsp;数据结构,红黑树,红黑树是epoll的实现方式顺着epoll问了问红黑树,但是我对于红黑树只有最简单概念的了解用的少,所以没答上比如&nbsp;链表的插入,口述链表插入的整个过程#24届软开秋招面试经验大赏##如何判断面试是否凉了##软件开发薪资爆料##你的秋招进展怎么样了#&nbsp;&nbsp;c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
转发
13 65 评论
分享
牛客网
牛客企业服务