1.关键字
(1)static +3
(2)const +3
内部如何实现
(3)union
const int与int const的区别
(3)inline +2
(4)sizeof
2.C++特性
(1)重写与重载的区别 +2
(2)C++类与C的struct的区别 +2
struct能否被继承
(3)delete与free的区别,new和,malloc +7
malloc是怎么实现的, free是否会直接回收内存
delete和delete []
(4)虚函数与纯虚函数的作用
纯虚函数能否被实例化
那些函数不能被设置为虚函数 +2
new最多可以new多大
(4)C11是什么,C++11特性 +3
(5)构造函数和析构函数分别能否是虚函数以及其原因 +2
(6)面向对象的四大原则
(7)指针和引用的区别 +5
站在汇编的角度来看,由于指针的使用灵活,使得底层实现中对指针的安全性检查更加严格
(8)初始化列表和函数体初始化,顺序
(9)八个基本数据类型
(10)智能指针 +3
原理
(12)拷贝构造函数
为什么返回引用
那些场景必须使用初始化列表
(13)C++是如何实现面向对象的
3.技巧
(1)内存泄漏的处理
(2)gdb调试
查看core文件中堆栈信息,bt命令等
(3)segmentfault怎么排查
4.底层
(1)编译器如何实现多态 +8
(2)内存管理、栈和堆 +5
C++中有哪些内存区域?对象是如何在这些区域中存储的?
(3)内存对象模型 +4
虚函数表的存放位置,为什么会有的把vbtr存放在前面,为什么有的存放在后面
(4)类成员访问权限的底层实现
(5)extern "C"的作用。
1.vector
(1)动态增长机制
stl用什么容器存储三维矩阵?
vector怎么使数据加入后就排序
2.map
底层实现
3.hash_map
4.list
5.deque
6.queue
7.stack
8.迭代器不能用与哪种容器?或者哪些情况下不能使用迭代器
1.链表
(1)链表排序
2.树
先序遍历和后序遍历能否构造出树?
层次遍历,深度遍历
红黑树与avl树的区别?局部平衡和整体平衡
(1)红黑树 +2
(2)二叉树
(3)B+树
(4)B-树
3.排序
各种排序方法、场景、复杂度、稳定度
(1)topn问题 +3
无序数组的第K大的数字,时间复杂度
(2)冒泡排序
(3)选择排序
(4)插入排序
(5)快速排序
优化方法
在什么情况下是不稳定的
(6)归并排序
4.图
(1)dijkstra算法和kruskal算法
5.算法
(1)KMP问题 +2
(2)动态规划几个经典问题
字符串的各种子串问题(公共序列问题),扔鸡蛋问题,进制转换
1.TLB
2.Linux内存页与windows内存页大小是否一样
3.进程调度算法
4.死锁的四个条件,怎么解决
5.虚拟内存管理
1.OSI的七层网络和TCP/IP的五层网络
2.IP协议的定义
3.TCP与UDP +6
TCP在握手过程中交换那些信息
如何用UDP实现可靠传输
TCP三次握手过程,为啥不是两次或者四次
TCP状态图、拥塞避免算法、滑动窗口算法 +2
4.交换机与路由器的原理,在第几层
5.socket
流程
6.https和http是什么协议,区别,https是如何实现的 +3
7.加密算法,MD5是什么
8.IO模型,select poll和epoll +5
9.DNS 域名解析系统 +2
1.Linux操作系统的开机流程 +2
从BIOS提取MBR信息->加载引导GRUB->加载内核->运行init进程->系统初始化->建立终端->登录系统,启动完成
开机后怎么启动一个程序
2.线程与进程,线程安全 +4
进程通信
线程同步
共享内存
多线程的适用场景是什么,为啥要多线程
多线程访问内存时怎么办
3.命令
(1)查找文件命令,查找文件含有关键字的命令,统计行数 +2
(2)top
(3)iostat
(4)uptime
(5)wget
(6)ls
(7)du
(8)awk
(9)ps
(10)pstree
(11)free
(12)grep
(13)sed
(14)strace
(15)netstat
4.radix树在Linux内核中的应用
5.服务器Linux与desktop Linux的区别
6.系统调用与库函数调用的区别
fopen是否是系统调用,close是否是系统调用
7.如何修改优先级
8.Linux文件系统
9.Linux内存布局 +2
10.内核态与用户态的区别
1.数据库的事务
2.数据库为什么要建立索引以及索引的缺点
(1)单例模式
1.一个数字,化为二进制,交换奇偶位置
2.给定1~100整数,确定的1~100,即1、2、3、。。。100。有1个缺了怎么办,2个呢
3.大文件字符串词频统计
map reduce? +2
4.二叉树的最大子树和
5.实现strstr
6.如何用C语言实现内存自动分配
7.二叉树的最大距离
8.两个栈实现一个队列 +2
9.二叉树的宽度
10.打印二叉树两个叶子节点之间的路径,写代码
11.字符串中第一个只出现一次的字符,如何优化算法使得遍历次数更少
12.能否用memset实例化一个类
13.已知前序遍历和中序遍历,求后序遍历
14.自增运算符的步骤(内存,寄存器),有两个线程分别自增100次,问最后结果的最大最小值?
15.在一个数组中有一个数字只出现1次外,其它数字都成对出现,如何找出这个数字?如果有两个数字出现1次呢?
16.单链表逆序
17.给出一颗二叉树,如何判断是否是完全二叉树
18.最大子串和问题
19.delete时,没有指明销毁空间有多大,它是如何知道要delete的数组是多大的.
20.一棵树的两个结点的最近公共祖先 +2
21.上千万条记录,统计出重复记录最多的前N条
22.数据量大时,外部排序如何实现
23.二叉树后序遍历非递归排序算法,有没有可能实现O(1)空间复杂度?用morris遍历方法即可
24.如何设计一套C++垃圾收集的系统
25.什么时候用**pointer
26.如何将一个指向大小为size_t S的内存的void*类型的指针A,复制到void* B,复制过程重新开辟一块内存,不能直接把A存的地址给B
27.如何将一个数组创建为一个堆 +2
28.C++是否保证类型安全?
29.子类析构时一定会调用父类的析构函数吗?
30.strcpy和memcpy的区别?
31.C++中哪些操作符不能进行重载?
32.switch语句支持的元素类型有哪些?
33.为什么通常类成员函数的定义不放在头文件中?
34.能否从模板类中派生出非模板类?
35.Windows中如何创建一个进程?如何创建一个线程?
36.大端机和小端机的区别,如何用编程识别出来
37求一个字符串最长不包含重复字符的连续子串
38.C语言中变量存储为什么要内存对齐;为什么除法比加减乘法慢很多
39.2^10234十进制表示有多少位写成科学计数法形式即a*10^t,求出t即可,两边取对数
40.vector的sort是用什么排序
41.全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
生命周期不同: 全局变量随主程序创建和创建,随主程序销毁而销毁;局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在; 使用方式不同:通过声明后全局变量程序的各个部分都可以用到;局部变量只能在局部使用;分配在栈区。 操作系统和编译器通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行的时候被加载。局部变量则分配在堆栈里面
42.HTTP状态码有哪些?3XX、4XX、5XX有哪些是做什么的
43.LINUX下C 文件连接的问题,动态链接和静态链接
1.54张扑克牌,除去两张大小王剩下52张扑克牌。问红桃A和黑桃A同时被一个人拿到的概率是多少?
2.在写程序遇到问题的时候,通常采用什么调试方法?
3.有100个球,每次取1-5个,你和对手轮流取,如果你先拿,请给出致胜策略?
4.给你一个5升和3升的壶,量出4升水
1.mapreduce是怎么工作的,外排序是怎么工作的 +2
1、C和C++的结构体有什么区别
C中struct没有访问权限修饰,封装而不隐藏,成员不能是函数
C++中struct与类基本相同,不同的是默认访问权限,struct不能用于定义模版类
如果不是为了与C兼容,一般不使用struct
2、Spring框架的核心思想
依赖注入
面向切面
简化模版
3.事务的四大特性
原子性,隔离性,一致性,永久性
4.数据库的三个模式
外模式:又称为子模式或用户模式,对应数据操作语言
模式:概念模式或逻辑模式,对应数据定义语言
内模式:物理模式
5.SQL的各种语言
数据查询语言:Select
数据定义语言:Create Drop,Alter
数据操纵语言:insert update deleted
数据控制语言:Grant,revoke
5.二叉树改成循环链表
6.大小端是什么?在本机发送的数据传输到网络中是否需要转换?
网络传输中,位是小端序,字节是大端序,本机要按照网络格式传输。
7.字符串反转的程序
双指针反转
8.构造函数和析构函数能否抛出异常
构造函数:
构造函数可以抛出异常,但尽量不要,出现异常之后,可能会造成内存泄漏,所以要用try包裹起来释放掉已经获得的资源。
析构函数:
析构函数不能抛出异常,虽然C++没有明确说明。
析构函数本来就是异常处理的一部分,如果又抛出异常,会导致程序崩溃,内存泄漏等问题。实在需要抛出异常,也有用catch包围着,并且释放资源。
9.熟悉Linux系统吗?有哪些指令?
http://blog.csdn.net/luchengtao11/article/details/69808660
6、delete null会不会出错?
不会报错,什么也不会发生
7、怎么在申请内存失败的时候抛出异常?
malloc等c库函数不会抛出异常
new 在g++编译器中会抛出异常,在VC++编译器中不会
如果会抛出异常就捕捉异常,如果没有抛出异常就判断指针是否为空
8、数据库中表连接的几种形式
内链接:select * from book as b,student ad s where s.studentid=b.studentid
左外连接:select * from book as b left join student as s where s.studentid=b.studentid
右外连接:select * from book as b right join student as s where s.studentid=b.studentid
9、hashmap
常用两种实现方法:
链地址法:
开放地址法:即线性探测再散列
查找的过程:根据关键字寻找地址,直到关键字匹配或者空地址。
10.问了c++中虚函数和纯虚函数区别
纯虚函数在基类中没有定义,在子类中要定义。拥有虚函数的类为抽象类。
11.抽象类和接口的异同
C++中没有接口,用抽象类代替
相同:
都不能实例化
不同:
接口都是public
抽象类可以有成员变量
只能继承一个抽象类但是能实现多个接口
12.数据库基本操作
13.socket
14.常量指针,指针常量,常量指针常量
const int * p;//常量指针
int const * p;//常量指针
int * const;//指针常量
const int * const p;//常量指针常量
15.数组指针、指针数组
int (* p)[];//指向整形数组的指针
int * p[];//指针的数组
int * (p[]);//指针的数组
16.数据库中死锁
S:共享锁
X:排他锁
产生死锁的条件:互斥,占有且等待,不可抢占,循环等待
17.c++如何解决头文件重复引用
#ifndefine #define #endif
18.解决代码在32位系统和64位系统上的跨平台问题。
鬼知道。。
stringcopy
无领导小组 15个道具选5个