秋招反思录 您所在的位置:网站首页 csapp难吗 秋招反思录

秋招反思录

2023-03-18 07:24| 来源: 网络整理| 查看: 265

C++基础

• 指针和引用的区别

• 堆和栈的区别

• new和delete是如何实现的,new 与 malloc的异同处

• C和C++的区别

• C++、Java的联系与区别,包括语言特性、垃圾回收、应用场景等(java的垃圾回收机制)

• Struct和class的区别

• define 和const的区别(编译阶段、安全性、内存占用等)

• 在C++中const和static的用法(定义,用途)

• const和static在类中使用的注意事项(定义、初始化和使用)

• C++中的const类成员函数(用法和意义),以及和非const成员函数的区别

• C++的顶层const和底层const

• final和override关键字

• 拷贝初始化和直接初始化,初始化和赋值的区别

• extern "C"的用法

• 模板函数和模板类的特例化

• C++的STL源码(这个系列也很重要,建议侯捷老师的STL源码剖析书籍与视频),其中包括内存池机制,各种容器的底层实现机制,算法的实现原理等)

• STL源码中的hashtable的实现

• STL中unordered_map和map的区别和应用场景

• STL中vector的实现

• STL容器的几种迭代器以及对应的容器(输入迭代器,输出迭代器,前向迭代器,双向迭代器,随机访问迭代器)

• STL中的traits技法

• vector使用的注意点及其原因,频繁对vector调用push_back()对性能的影响和原因。

• C++中的重载和重写的区别

• C++内存管理,内存池技术(热门问题),与csapp中几种内存分配方式对比学习加深理解

• 介绍面向对象的三大特性,并且举例说明每一个

• C++多态的实现

• C++虚函数相关(虚函数表,虚函数指针),虚函数的实现原理(包括单一继承,多重继承等)(拓展问题:为什么基类指针指向派生类对象时可以调用派生类成员函数,基类的虚函数存放在内存的什么区,虚函数表指针vptr的初始化时间)

• C++中类的数据成员和成员函数内存分布情况

• this指针

• 析构函数一般写成虚函数的原因

• 构造函数、拷贝构造函数和赋值操作符的区别

• 构造函数声明为explicit

• 构造函数为什么一般不定义为虚函数

• 构造函数的几种关键字(default delete 0)

• 构造函数或者析构函数中调用虚函数会怎样

• 纯虚函数

• 静态类型和动态类型,静态绑定和动态绑定的介绍

• 引用是否能实现动态绑定,为什么引用可以实现

• 深拷贝和浅拷贝的区别(举例说明深拷贝的安全性)

• 对象复用的了解,零拷贝的了解

• 介绍C++所有的构造函数

• 什么情况下会调用拷贝构造函数(三种情况)

• 结构体内存对齐方式和为什么要进行内存对齐?

• 内存泄露的定义,如何检测与避免?

• 手写智能指针的实现(shared_ptr和weak_ptr实现的区别)

• 智能指针的循环引用

• 遇到coredump要怎么调试

• 内存检查工具的了解

• 模板的用法与适用场景

• 成员初始化列表的概念,为什么用成员初始化列表会快一些(性能优势)?

• 用过C++ 11吗,知道C++ 11哪些新特性?

• C++的调用惯例(简单一点C++函数调用的压栈过程)

• C++的四种强制转换

• C++中将临时变量作为返回值的时候的处理过程(栈上的内存分配、拷贝过程)

• C++的异常处理

• volatile关键字

• 优化程序的几种方法

• public,protected和private访问权限和继承

• class和struct的区别

• decltype()和auto

• inline和宏定义的区别

• C++和C的类型安全

操作系统基础

• 进程与线程的区别和联系

• 一个进程可以创建多少线程,和什么有关

• 一个程序从开始运行到结束的完整过程(四个过程)

• 进程通信方法(Linux和windows下),线程通信方法(Linux和windows下)

• 文件读写使用的系统调用

• 怎么回收线程

• 守护进程、僵尸进程和孤儿进程

• 处理僵尸进程的两种经典方法

• 进程终止的几种方式

• linux中异常和中断的区别

• 一般情况下在Linux/windows平台下栈空间的大小

• 五种IO模型

• 守护进程

• 程序从堆中动态分配内存时,虚拟内存上怎么操作的

• 交换空间与虚拟内存的关系

• 堆和栈的区别;从堆和栈上建立对象哪个快?(考察堆和栈的分配效率比较)

• 内存泄漏和内存溢出

• 常见内存分配方式和错误

• 堆内存和栈内存的区别

• 可重入函数和可重入内核

• 操作系统动态内存分配的几种策略

• 内部碎片和外部碎片

• 系统调用进入内核态的过程

• 内核态和用户态的区别

• 常见的进程调度算法以及linux的进程调度

• 中断、陷阱、故障和终止

• 进程通信方法

• 线程互斥和同步的方法

• 内存对齐的规则和作用

• 页面置换算法

• 实现一个LRU页置换算法(或者FIFO置换算法)

• 死锁的必要条件(怎么检测死锁,解决死锁问题),银行家算法(死锁避免)

• 哲学家就餐,读者写者,生产者消费者(怎么加锁解锁,伪代码)

• 海量数据的bitmap使用原理

• 布隆过滤器原理与优点

• 布隆过滤器处理大规模问题时的持久化,包括内存大小受限、磁盘换入换出问题

网络基础

• 网络的几种分层体系结构

• 建立TCP服务器的各个系统调用

• socket网络编程有哪些系统调用?其中close是一次就能直接关闭的吗,半关闭状态是怎么产生的?

• MTU和MSS

• 对路由协议的了解与介绍

• 路由协议所使用的算法

• 路由表的项目包括哪些

• 地址解析协议ARP的过程

• 网际控制报文协议ICMP的过程

• 动态主机配置协议DHCP的过程

• WAN LAN WLAN VLAN VPN的区别

• 介绍一下VPN(虚拟专用网)

• TCP和UDP的区别

• TCP如何保证数据的正确性

• TCP和UDP相关的协议与端口号

• TCP(UDP,IP)等首部的认识(http请求报文构成)

• 网络层分片的原因与具体实现

• TCP的三次握手与四次挥手的详细介绍(TCP连接建立与断开是热门问题)

• TCP握手以及每一次握手客户端和服务器端处于哪个状态(11种状态)

• 为什么使用三次握手,两次握手可不可以?

• TIME_WAIT的意义(为什么要等于2MSL)

• 超时重传机制(不太高频)

• TCP怎么保证可靠性(面向字节流,超时重传,应答机制,滑动窗口,拥塞控制,校验等)?

• 流量控制的介绍,采用滑动窗口会有什么问题(死锁可能,糊涂窗口综合征)?

• TCP滑动窗口协议

• 拥塞控制和流量控制的区别

• TCP拥塞控制,算法名字?(极其重要)

• 网页解析的过程与实现方法

• 应用层协议常用的端口号

• http协议与TCP联系

• http/1.0和http/1.1的区别

• http的请求方法有哪些?get和post的区别。

• http的状态码

• http和https的区别,由http升级为https需要做哪些操作

• https的具体实现,怎么确保安全性

• 在浏览器输入一个URL的流程,这个过程中浏览器做了什么(如www.baidu.com)

• URL包括哪三个部分?

• 长连接与短连接的区别以及使用场景

• 一个机器能够使用的端口号上限是多少,为什么?可以改变吗?那如果想要用的端口超过这个限制怎么办?

• 介绍一下ping的过程,分别用到了哪些协议

• 对称密码和非对称密码体系

• 数字证书的了解(高频)

• 客户端为什么信任第三方证书

• RSA加密算法(非对称加密,用公匙和私匙实现);

• MD5原理(MD5是密码散列函数)=> SHA安全散列算法替代

• 单条记录高并发访问的优化

• 数据流和粘包问题

• 一台机器最多可以建立多少tcp连接?

• 五种IO模型的过程和比较

• IO多路复用(select,poll,epoll的区别)

• 有没有抓过TCP包,描述一下

• 一个ip配置多个域名,靠什么识别?

• 服务器攻击(DDos攻击)

• 重放攻击,IP欺骗

Linux相关

• Linux的I/O模型介绍以及同步异步阻塞非阻塞的区别(超级重要)

• 文件系统的理解(EXT4,XFS,BTRFS)

• 文件处理grep,awk,sed这三个命令必知必会

• IO复用的三种方法(select,poll,epoll)深入理解,包括三者区别,内部原理实现?

• Epoll的ET模式和LT模式(ET的非阻塞)

• 查询进程占用CPU的命令(注意要了解到used,buf,***代表意义)

• linux的其他常见命令(kill,find,cp等等)

• shell脚本用法

• 硬连接和软连接的区别

• 文件权限怎么看(rwx)

• 文件的三种时间(mtime, atime,ctime),分别在什么时候会改变

• Linux监控网络带宽的命令,查看特定进程的占用网络资源情况命令

数据库基础

• 关系型和非关系型数据库的区别(各自优点)

• 常用SQL语句(DDL,DML,DCL,TCL)

• 数据库中join的类型与区别(inner join, outer join, cross join, natural join, self join),注意适用场景和sql语句的编写

• 数据库的索引类型

• 聚集索引和非聚集索引的区别(叶节点存储内容)

• 唯一性索引和主码索引的区别

• 索引的优缺点,什么时候使用索引,什么时候不能使用索引(重点)

• 索引的底层实现(B+树,为何不采用红黑树,B树)

• B树和B+树具体实现

• 索引最左前缀问题

• Mysql的优化(高频,索引优化,性能优化)

• 数据库引擎介绍,Innodb和Myisam的特点与区别

• 数据库中事务的ACID(四大特性都要能够举例说明,理解透彻,比如原子性和一致性的关联,隔离性不好会出现的问题)

• 数据库隔离性设置不同会出现的问题(脏读、不可重复读、丢失修改、幻读)

• 数据库的隔离级别,Mysql和Oracle的隔离级别分别是什么

• 数据库连接池的作用

• Mysql的表空间方式,各自特点

• 分布式事务

• 数据库的范式

• 数据的锁的种类,加锁的方式

• 视图的作用与使用方法(如何删除等)

• 分库分表,主从复制,读写分离。(我不会,也没碰到过)

• 项目中哪里用到了数据库,怎么用的

• Mem***和Redis了解

大数据和分布式

• Hadoop框架下,各个组件的构成及作用

• BASE原则,CAP原则

• 一致性算法Raft的过程

• TIDB原理

• HBase的存储原理

• HDFS运行原理

• Hive的了解

• Spark的了解

• 介绍熟悉的设计模式(单例,简单工厂,观察者模式等等)

• 写单例模式(饿汉模式和懒汉模式),线程安全版本

• MVC设计模式



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有