嵌入式八股2C/C++

本来想写20条,发现自己太啰嗦,14条就提示超过文字上限了,我得精简一点
15.什么是内存对齐(也叫字节对齐,cpu取内存时是按block,实际长度是跟字长有关,编译器会对结构体大小按内存对齐优化,可以用#pragma pack()设置)
16.++i和i++的区别(从汇编看,++i是直接自增,相当于一条指令,i++需要临时变量存i,再i自增,所以++i性能比i++好。但现代编译器会自动优化,一般不会有性能差)
17.什么是堆栈溢出,内存越界(数组超长或者栈小,局部变量数组过大)
18.怎么理解数组传参退化为指针(形参数组当指针用)
19.问号表达式,或运算符的截断性
20.指针传递,取地址传递,值传递的区别。

C++在嵌入式领域主要是应用开发,所以除了要理解C的八股,还需注意一些重点
1.面对象编程的特点和面向过程的区别(封装继承多态)
2.C++是怎么实现多态的(虚函数)
3.什么是虚函数(virtual关键字修饰,父类中的虚函数可以在子类中重写,这样父类指针指向子类对象并调用该函数实际调用的是子类方法从而实现多态)
3.虚函数如何实现多态(父类指针指向子类对象)
4.求类的大小(sizeof(class))(除了考虑成员变量大小和字节对齐,再就是,如果类中存在虚函数,那么会隐藏一个指针指向类的虚表。因此还多出一个虚表指针的大小。)
5.什么是虚表,虚表保存在哪里(如果类中有虚函数,就有一个虚表,保存函数接口,虚表编译时生成,保存在数据段,不占用类的空间)
6.什么是抽象类,抽象类可以创建对象吗(如果虚函数后面有=0的字段,即为纯虚函数。如果类中有纯虚函数,称为抽象类,抽象类不能实例化)
7..什么是菱形继承,怎么解决?
8.什么是函数重载,可以返回值不同吗(返回值和函数名必须相同,但参数类型和个数可以不同)
9.类成员public,protected,private的含义(public类外可以随意访问,protected子类能访问,private只有自己能访问,子类不能访问)
10.友元能互相访问私有成员吗(可以)
11.智能指针解决什么问题,原理(内存泄漏)
12.为什么有shared_ptr还要weak_ptr(循环引用)
13.空类大小(1字节,编译器分配用来占内存)
14.类中的static成员变量(不属于某一个对象,在全局区)
15.内联函数概念
全部评论

相关推荐

02-26 15:33
已编辑
西北大学 golang
点赞 评论 收藏
分享
会飞的猿:我看你想进大厂,我给你总结一下学习路线吧,java语言方面常规八股要熟,那些java的集合,重点背hashmap八股吧,jvm类加载机制,运行时分区,垃圾回收算法,垃圾回收器CMS、G1这些,各种乐观锁悲观锁,线程安全,threadlocal这些。在进阶一些的比如jvm参数,内存溢出泄漏排查,jvm调优。我这里说的只是冰山一角,详细八股可以去网上找,这不用去买,都免费资源。mysql、redis可以去看小林coding,我看你简历上写了,你一定要熟,什么底层b+树、索引结构、innodb、mvcc、undo log、redo log、行级锁表级锁,这些东西高频出现,如果面试官问我这些我都能笑出来。消息队列rabbitmq也好kafka也好,学一种就行,什么分区啊副本啊确认机制啊怎么保证不重复消费、怎么保证消息不丢失这些基本的一定要会,进阶一点的比如LEO、高水位线、kafka和rocketmq底层零拷贝的区别等等。计算机网络和操作系统既然你是科班应该理解起来问题不大,去看小林coding这两块吧,深度够了。spring boot的八股好好看看吧,一般字节腾讯不这么问,其他的java大厂挺爱问的,什么循环依赖啥的去网上看看。数据结构的话科班应该问题不大,多去力扣集中突击刷题吧。项目的话其实说白了还是结合八股来,想一想你写的这些技术会给你挖什么坑。除此之外,还有场景题、rpc、设计模式、linux命令、ddd等。不会的就别往简历上写了,虽然技术栈很多的话好看些,但背起来确实累。总结一下,多去实习吧,多跳槽,直到跳到一个不错的中厂做跳板,这是一条可行的进大厂的路线。另外,只想找个小厂的工作的话,没必要全都照这些准备,太累了,重点放在框架的使用和一些基础八股吧。大致路线就这样,没啥太多难度,就是量大,你能达到什么高度取决于你对自己多狠,祝好。
点赞 评论 收藏
分享
评论
5
15
分享

创作者周榜

更多
牛客网
牛客企业服务