三月c++面经(英特尔、旷世、云从、地平线,具体回答后续补)

三月c++面经(英特尔、旷世、云从、地平线)

手撕代码

单例模式(懒汉饿汉,常用的单例写法,写了三种,为啥是线程安全,内存屏障,violate)

链表排序 https://leetcode-cn.com/problems/7WHec2/ 要求时间复杂度小于o(n2),不得开辟vector然后排序再串起来的方案

反转链表 https://leetcode-cn.com/problems/UHnkqh/ 递归和不递归的做法

合并排序链表 https://leetcode-cn.com/problems/vvXgSW/ easy 不知道为啥是leetcode困难题

简单计算器 https://leetcode-cn.com/problems/calculator-lcci/ 手撕唯一一道做不出来的题

模板的特化与偏特化,就测测模板的基础编程

模板快排

模板实现数据结构

括号匹配 https://leetcode-cn.com/problems/valid-parenthesis-string/

多线程按顺序输出ABC n次 条件变量+unique_lock

多线程计算1+…+n

简单自旋锁atomic 实现CAS

记录最大值与最小值和平均值的队列(队列最大长度为n)

手撕生产者与消费者队列,差不多写出来了,但是被说没有很好的拆解,耦合度太高,时间太短了

手撕shared_ptr

面经八股

unique_ptr和shared_ptr有什么区别,分别什么时候使用,请简述他们的实现方案

shared_ptr和普通指针在你的工作中,你是怎么考虑使用的

C++11有哪些新特性,14和17呢

STL有哪些数据结构,底层分别是什么原理

红黑数为什么保证了logn的复杂度

红黑树为啥是有序的

简述红黑树插入一个值的过程

deque的具体实现

vector能不能放智能指针

迭代器失效vector和map举例,关系型和非关系型

vector 扩容的原理

怎么回收vector的内存

multimap的底层实现和map的区别

死锁和怎么解决死锁

自旋锁适合多核还是单核,在单核和多核分别存在什么问题

fork的底层实现

const有什么用处

static的用法

四种转换

const 定义的对象,我可以直接使用const_cast转换吗

interputer_cast详细说说

dynamic_cast转换与安全性为题

struct 对齐及占用内存大小,为什么要对齐

进程切换和线程切换有什么区别

函数栈调用的具体过程讲讲,inline的具体讲讲,什么时候不能使用inline inline和宏定义

class 空,普通class 带有虚函数的class 实例占用多大的内存

进程中的内存分配,进程中有几个栈,几个堆

虚拟内存的原理

堆内存的底层实现,谈到了内存池,讲讲内存池吧

stl::sort() 排序算法,各种

allocator的底层原理

各种内存是在哪一步进行的初始化,写时复制

传值,传指针,传引用的构造函数怎么调用的

构造函数,析构,移动,复制,赋值

右值的好处

LRU算法口述

孤儿进程僵尸进程

线程同步与进程同步

shm的原理,底层做了什么

栈帧指针的移动,mmap函数底层原理

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值