查看: 6411| 回复: 11
收起左侧

分享一个自己梳理的计算机领域所有基础知识点,覆盖非常全面,面试必备

   
10
本楼:   👍  25
100%
0%
0   👎
全局:   27
96%
4%
1

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x

准备了多年的计算机知识点,适合NewGrade复习面试用,觉得好请帮忙给点大米,谢谢~


基础篇:操作系统、计算机网络、设计模式
一:操作系统
  • 进程的有哪几种状态,状态转换图,及导致转换的事件。
  • 进程、线程与协程的区别。
  • 进程通信(IPC)的几种方式。
  • 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)
  • 线程的实现方式. (也就是用户线程与内核线程的区别)
  • 用户态和核心态的区别。
  • 用户栈和内核栈的区别。
  • 内存池、进程池、线程池。(c++程序员必须掌握)
  • 死锁的概念,导致死锁的原因.
  • 导致死锁的四个必要条件。
  • 处理死锁的四个方式。
  • 预防死锁的方法、避免死锁的方法。
  • 进程调度算法。(周转时间 =  程序结束时间 -- 开始服务时间、带权周转时间=  周转时间 /  要求服务时间)
  • Windows内存管理的方式(块式、页式、段式、段页式).
  • 内存连续分配方式采用的几种算法及各自优劣。
  • 动态链接及静态链接.
  • 内存管理方式:段存储,页存储,段页存储。
  • 分段分页方式的比较各自优缺点。
  • 几种页面置换算法,会算所需换页数。(LRU用程序如何实现?)
  • 虚拟内存的定义及实现方式。
  • 虚拟地址、逻辑地址、线性地址、物理地址的区别
  • 操作系统的四个特性。
  • DMA。
  • Spooling。
  • 外存分配的几种方式,及各种优劣。
  • 大端与小端的区别
  • 硬中断与软中断的区别

页面缓存算法:http://www.cnblogs.com/dolphin0520/p/3749259.html
    http://flychao88.iteye.com/blog/1977653
    http://www.360doc.com/content/13/0805/16/13247663_304916783.shtml

二:计算机网络
  • 电路交换与分组交换的区别?优劣对比。
  • OSI有哪几层,会画出来,知道主要几层的各自作用。
  • TCP/IP有哪几层,会画出来,知道所有层数的作用,会列举各层主要的协议名称。
  • 硬件(MAC)地址的概念及作用。
  • ARP协议的用途 及算法、在哪一层上会使用arp ?
  • CRC冗余校验算法,反码和检验算法。
  • 如何实现透明传输。
  • 知道各个层使用的是哪个数据交换设备。(交换机、路由器、网关)
  • 路由表的内容。
  • 分组转发算法。
  • IP报文的格式,格式的各个字段的含义要理解。
  • MTU的概念,啥叫路径MTU? MTU发现机制,TraceRoute(了解)。
  • RIP协议的概念及算法
  • ICMP协议的主要功能。
  • 组播和广播的概念,IGMP的用途。(环回地址、广播地址)
  • Ping协议的实现原理,ping 命令格式。
  • 子网划分的概念,子网掩码。
  • IP地址的分类,如何划分的,及会计算各类地址支持的主机数。
  • DNS的概念,用途,DNS查询的实现算法。
  • TCP与UDP的概念,相互的区别及优劣。
  • UDP报文的格式,字段的意义。
  • TCP 报文的格式,字段的意义。
  • TCP通过哪些措施,保证传输可靠?
  • tcp 连接全过程,要求画图并标明两端状态和具体发送的字段 也就是三次握手  和四次挥手状态图。
  • TIME_WAIT状态的概念及意义。
  • 滑动窗口协议 与停止等待协议的区别。
  • TCP的流量控制和拥塞控制实现原理(会画拥塞控制的典型图)。
  • TCP的快速重传与快速恢复算法,慢启动 快重传。
  • TFTP 与 FTP的区别。
  • 阻塞方式和非阻塞方式,阻塞connect与非阻塞connect。(比较难,有兴趣可以了解)
  • HTTP基本格式。(java程序员必须掌握)
  • time_wait是什么,产生在 tcp连接那一端,为什么要有,如果没有的话 什么危害
  • time_wait时间大概是多少:具体时间是4-6分钟,也就是2个报文最长生存时间
  • TCP滑动窗口与回退N针协议。
  • Http的状态码含义。
  • Http request的几种类型。
  • Http1.1和Http1.0的区别
  • Http怎么处理长连接。
  • Cookie与Session的作用于原理。
  • 电脑上访问一个网页,整个过程是怎么样的:DNS、HTTP、TCP、OSPF、IP、ARP。
  • Ping的整个过程。ICMP报文是什么。
  • C/S模式下使用socket通信,几个关键函数。
  • IP地址分类。
  • 路由器与交换机区别。
  • HTTP中GET与POST、PUT的区别

TCP三次握手四次挥手、TCP与UDP区别:http://blog.csdn.net/whuslei/article/details/6667471
http://www.cnblogs.com/bizhu/archive/2012/05/12/2497493.html
三:设计模式
  • 各种常用模式的用途,使用方法(类图)。
  • 单例模式的双重检查实现。
  • MVC模式

提高篇:Linux、数据库、算法
三:Linux基本命令
  • 绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?
  • 怎么查看当前进程?怎么执行退出?怎么查看当前路径?
  • 怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户id?查看指定帮助用什么命令?
  • Ls 命令执行什么功能? 可以带哪些参数,有什么区别?
  • 建立软链接(快捷方式),以及硬链接的命令。
  • 目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
  • 文件权限修改用什么命令?格式是怎么样的?
  • 查看文件内容有哪些命令可以使用?
  • 随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello  world”?
  • 终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
  • 移动文件用哪个命令?改名用哪个命令?
  • 复制文件用哪个命令?如果需要连同文件夹一块复制呢?如何需要有提示功能呢?
  • 删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?
  • Linux下命令有哪几种可使用的通配符?分别代表什么含义?
  • 用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
  • Grep命令有什么用? 如何忽略大小写? 如何查找不含该串的行?
  • Linux中进程有哪几种状态?在ps显示出来的信息中,分别用什么符号表示的?
  • 怎么使一个命令在后台运行?
  • 利用ps怎么显示所有的进程? 怎么利用ps查看指定进程的信息?
  • 哪个命令专门用来查看后台任务?
  • 把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
  • 终止进程用什么命令? 带什么参数?
  • 怎么查看系统支持的所有信号?
  • 搜索文件用什么命令? 格式是怎么样的?
  • 查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?
  • 使用什么命令查看用过的命令列表?
  • 使用什么命令查看磁盘使用空间? 空闲空间呢?
  • 使用什么命令查看网络是否连通?
  • 使用什么命令查看ip地址及接口信息?
  • 查看各类环境变量用什么命令?
  • 通过什么命令指定命令提示符?
  • 查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?
  • 通过什么命令查找执行命令?
  • 怎么对命令进行取别名?

四:Linux编程
  • 列举Linux内存管理相关的几个函数,各自有什么功能?
  • GCC只编译的选项是什么?只进行预处理的选项是什么?在命令行定义宏的选项是什么?
  • Linux静态库的使用,怎么创建一个静态库? 怎么使用一个静态库?静态库文件的后缀名是什么?静态库的命名规范。
  • nm 工具的作用,ldd工具的作用。
  • Linux动态库的使用,怎么创建一个动态库? 动态库文件的后缀名是什么?怎么使用一个动态库?动态库的命名规范? 系统默认的动态库的查找路径?动态库显示连接所使用的系统库是什么?
  • Linux下make 与makefile。用什么参数指定makefile文件? 什么是默认的makefile文件。
  • 在哪个文件夹下存有进程运行时的所有信息?
  • 每个程序默认打开哪三个文件设备?
  • 操作文件描述符的读写函数是什么?打开文件描述符以及关闭文件描述符的函数?
  • Fcntl函数主要的几个作用。
  • 创建进程的几个函数,及各自区别。
  • 父进程先结束,子进程会变为? 子进程先结束,子进程会变为?
  • 怎么使父进程回收子进程? 相关的几个函数。
  • 子进程在创建时与父进程的内存资源的复制问题。
  • 中断信号、终止信号、定时器信号的宏是什么?
  • 在程序中注册信号和发送信号用什么函数?
  • 信号的可靠与不可靠的含义。哪些信号是可靠的?哪些信号是不可靠的?
  • 信号屏蔽用什么函数? SigSuspend的作用? Sigpending的作用?
  • 信号处理函数处理信号时是否会被信号中断?
  • 最新版本的信号发送与处理函数?与老版本的发送与数据函数有什么区别?
  • Linux下进程有哪些通信方式(IPC)?
  • TCP服务器编程模型。
  • UDP服务器编程模型。
  • TCP编程特征,由于每次不定长数据到达,则一般使用什么选项?
  • Selected模型是什么? 相比而言多进程实现方式有什么区别?Selected、epoll模型、poll模型的区别。
  • 常用的socket选项有哪些?利用哪个函数来设置socket选项?
  • 怎么发送和设置带外(OOB)数据?
  • Linux 下多线程的库是什么? 利用哪个函数创建线程?利用哪个函数强制结束线程?主线程等待子线程结束时使用的函数?
  • 线程怎样在被迫退出时能做一些善后处理?以及怎么用linux特有的方式处理?

五:数据库

1.什么是存储过程?存储过程用什么调用?存储过程的优缺点?
2.什么是触发器?
3.什么是事务?事务的ACID特性解释?事务的类别有哪些?
4.数据库三个范式?五大约束?
5.并发控制里面的乐观锁和悲观锁是什么?
6.什么是E-R图?
7.什么是游标?
8.什么是视图?视图的使用场景有哪些?
9.什么是索引?索引的作用是什么?索引的优缺点?
10.使用索引查询一定会提高查询的性能吗?
11.超键、候选键、主键、外键分别是什么?
12.drop、delete、truncate的区别是什么?
13.数据表的行列转换
https://zhuanlan.zhihu.com/p/54165946
    MyISAM   InnoDB   构成上的区别: 每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。 .frm文件存储表定义。 数据文件的扩展名为.MYD (MYData)。 索引文件的扩展名是.MYI (MYIndex)。   基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB  事务处理上方面:  MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持   InnoDB提供事务支持事务,外部键(foreign key)等高级数据库功能  SELECT   UPDATE,INSERT,Delete操作  如果执行大量的SELECT,MyISAM是更好的选择  1.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表  2.DELETE   FROM table时,InnoDB不会重新建立表,而是一行一行的删除。  3.LOAD   TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用    对AUTO_INCREMENT的操作  每表一个AUTO_INCREMEN列的内部处理。  MyISAM为INSERT和UPDATE操作自动更新这一列。这使得AUTO_INCREMENT列更快(至少10%)。在序列顶的值被删除之后就不能再利用。(当AUTO_INCREMENT列被定义为多列索引的最后一列,可以出现重使用从序列顶部删除的值的情况)。  AUTO_INCREMENT值可用ALTER TABLE或myisamch来重置  对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引  更好和更快的auto_increment处理   如果你为一个表指定AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数器的计数器,它被用在为该列赋新值。  自动增长计数器仅被存储在主内存中,而不是存在磁盘上  关于该计算器的算法实现,请参考  AUTO_INCREMENT列在InnoDB里如何工作  表的具体行数    select count() from table,MyISAM只要简单的读出保存好的行数,注意的是,当count()语句包含   where条件时,两种表的操作是一样的  InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行  锁    表锁  提供行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in   SELECTs),另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表, 例如update table set num=1 where name like “%aaa%”
算法篇:算法与数据结构
一:算法
  • 算法的几个特征是什么。
  • 算法复杂性的定义。大O、θ、、小o分别表示的含义。
  • 递归算法的定义、递归算法的两要素。
  • 分治算法的思想,经典的分治算法(全排列、二分搜索、归并排序、快速排序、线性时间选择、最接近点对问题)。
  • 动态规划算法解题框架,动态规划算法的两个要素是什么?备忘录方法是什么?
  • 经典的动态规划问题(矩阵连乘问题、最长公共子序列问题、0-1背包问题)。
  • 贪心算法的思想,贪心算法的两个要素。
  • 经典的贪心问题(活动安排问题、背包问题、装载问题、哈夫曼编码、单源最短路径、最小生成树问题)。9. 回溯法的思想,回溯法中有哪两种典型的模型。
  • 经典的回溯算法(n后问题、0-1背包问题、旅行售货商问题)。
  • 分支限界法思想,有哪两种分支限界法。
  • 经典的分支限界算法(0-1背包问题、旅行售货商问题)。
  • 链表与数组。
  • 队列和栈,出栈与入栈。
  • 链表的删除、插入、反向。
  • 字符串操作。
  • Hash表的hash函数,冲突解决方法有哪些(开放定址法、线性探测再散列、二次探测再散列、链址法)
  • 各种排序:冒泡、选择、插入、希尔、归并、快排、堆排、桶排、基数的原理、平均时间复杂度最坏时间复杂度、空间复杂度、是否稳定。
  • 快排的partition函数与归并的Merge函数。
  • 对冒泡与快排的改进。
  • 二分查找,与变种二分查找。
  • 二叉树、B+树、AVL树、红黑树、哈夫曼树。
  • 二叉树的前中后续遍历:递归与非递归写法,层序遍历算法。
  • 图的BFS与DFS算法,最小生成树prim算法与最短路径Dijkstra算法。
  • KMP算法。
  • 排列组合问题。
  • 动态规划、贪心算法、分治算法。(一般不会问到)
  • 大数据处理:类似10亿条数据找出最大的1000个数.........等等
    算法的话其实是个重点,因为最后都是要你写代码,所以算法还是需要花不少时间准备,这里有太多算法题,写不全,我的建议是没事多在OJ上刷刷题(牛客网、leetcode等),剑指offer上的算法要能理解并自己写出来,编程之美也推荐看一看。
    1 大整数加、减、乘、除、求模运算实现
    2 很多整数,找其中出现次数最多的那个数
    3 单链表翻转(两个指针如何实现)、查找、删除、插入以及双向链表、有序链表合并
    4 判断一个整数是否是2的整数次幂.(n&(n-1))
    5 二分查找(注意边界条件)
    6 常见排序算法的实现以及稳定性(快排跟归并考的很多)
    7 字符串翻转(O(n))、匹配(KMP算法)
    8 最长递增子序列(nlogn的算法)
    9 链表判断是否有环,环的入口,两个链表是否相交(快慢指针)。
    10 指定一个数组,求2个数的和等于指定的和(某一个数),如果是3,4,5,n个等于个的和(某一个数)呢?(可以看作背包问题)
    11 跳台阶问题

二:数据结构
  • 数据结构的定义。
  • 栈的两个应用:括号匹配和表达式的计算。是怎么应用的?表达式计算用的是哪种表达方式?有什么好处?
  • 字符串匹配算法:朴素的匹配算法、KMP算法。
  • 二叉树前序、中序、后序递归遍历算法。二叉树前序非递归遍历算法。
  • 堆,建堆算法,堆的插入和删除算法,堆排序。
  • 哈希。哈希函数的有哪些种?余数的取法? 处理冲突的方法? 闭散列方法有哪些?
  • 二叉搜索树的搜索、插入、删除。时间复杂度。
  • 二叉平衡树的插入结点的原理,有哪几种旋转方式?分别适用于哪种情况。分析二叉平衡树的时间复杂度。
  • 红黑树的定义,红黑树的性能分析和与二叉平衡树的比较。
  • 图有哪些储存表示。
  • 链表插入排序、链表归并排序。
  • 常见的有哪几种排序算法,试比较其时间复杂度,以及是否稳定,及各自使用的情形。
  • 常用分配排序有哪几种? 基数排序的定义,分类及原理。
  • 外部排序的过程。
  • B树、B+树、Trie的概念及用途,添加删除结点的原理。

动态查找树结构的对比:
(1) 平衡二叉树和红黑树 [AVL PK RBT]
AVL 和RBT 都是二叉查找树的优化。其性能要远远好于二叉查找树。他们之间都有自己的优势,其应用上也有不同。
结构对比: AVL的结构高度平衡,RBT的结构基本平衡。平衡度AVL > RBT。
查找对比: AVL 查找时间复杂度最好,最坏情况都是O(logN)。
RBT 查找时间复杂度最好为O(logN),最坏情况下比AVL略差。
插入删除对比: 1. AVL的插入和删除结点很容易造成树结构的不平衡,而RBT的平衡度要求较低。因此在大量数据插入的情况下,RBT需要通过旋转变色操作来重新达到平衡的频度要小于AVL。
  • 如果需要平衡处理时,RBT比AVL多一种变色操作,而且变色的时间复杂度在O(logN)数量级上。但是由于操作简单,所以在实践中这种变色仍然是非常快速的。
  • 当插入一个结点都引起了树的不平衡,AVL和RBT都最多需要2次旋转操作。但删除一个结点引起不平衡后,AVL最多需要logN 次旋转操作,而RBT最多只需要3次。因此两者插入一个结点的代价差不多,但删除一个结点的代价RBT要低一些。
  • AVL和RBT的插入删除代价主要还是消耗在查找待操作的结点上。因此时间复杂度基本上都是与O(logN) 成正比的。
    总体评价:大量数据实践证明,RBT的总体统计性能要好于平衡二叉树。
    (2) B~树和B+树 [ B~Tree PK B+Tree]
    B+树是B~树的一种变体,在磁盘查找结构中,B+树更适合文件系统的磁盘存储结构。
    结构对比: B~树是平衡多路查找树,所有结点中都包含了待查关键字的有效信息(比如文件磁盘指针)。每个结点若有n个关键字,则有n+1个指向其他结点的指针。
    B+树严格意义上说已经不是树,它的叶子结点之间也有指针链接。B+树的非终结点中并不含有关键字的信息,需要查找的关键字的全部信息都包含在叶子结点上。非终结点中只作为叶子结点关键字的索引而存在。
    查找对比:1. 在相同数量的待查数据下,B+树查找过程中需要调用的磁盘IO操作要少于普通B~树。由于B树所在的磁盘存储背景下,因此B+树的查找性能要好于B~树。
  • B+树的查找效率更加稳定,因为所有叶子结点都处于同一层中,而且查找所有关键字都必须走完从根结点到叶子结点的全部历程。因此同一颗B+树中,任何关键字的查找比较次数都是一样的。而B树就不一定了,可能查找到某一个非终结点就结束了。
    插入删除对比: B+树与B~树在插入删除操作中的效率是差不多的。
    总体评价:在应用背景下,特别是文件结构存储中。B+树的应用要更多,其效率也要比B~树好。
    数据结构:
    时间复杂度和空间复杂度
    线性表
    顺序表(基本都会)
    单链表(代码实现,带头节点和不带头节点)
    双链表(插入删除操作)
    循环链表
    栈、队列、数组
    栈(FILO)概念、应用
    队列(FIFO)概念、应用

    KMP
    二叉树
    二叉树先序遍历、中序遍历、后序遍历
    二叉树非递归先序遍历、中序遍历、后序遍历
    二叉排序树、二叉平衡树

    BFS、DFS
    最小生成树(普利姆、克鲁斯卡尔)
    最短路(Dijkstra、Floyd)
    拓扑排序
    关键路径
    八大排序算法(时间复杂度、空间复杂度、稳定性)
    插入型
    直接插入
    希尔排序
    交换类
    冒泡排序
    快速排序*****(重点)
    选择类
    简单选择排序
    堆排序
    基数排序
    归并排序
    查找
    二叉排序树
    二叉平衡树
    B-树
    Hash

语言篇:Java

Java基础:
  • 九种基本数据类型的大小,以及他们的封装类。(bool、int、byte、char、float、double、short、Long、void)
  • Switch能否用string做参数(Java7以后支持、以前只支持byte、short、char、int、enum)?
  • equals与的区别(一个方法一个运算符,比较内存地址)。
  • Object有哪些公用方法(getClass、clone、equals、hashCode、tostring、wait、notify、notifyall)?
  • Java的四种引用,强弱软虚,用到的场景。
  • Hashcode的作用。
  • ArrayList、LinkedList、Vector的区别。
  • String、StringBuffer与StringBuilder的区别(可变与不可变、StringBuffer与String线程安全)。
  • Map、Set、List、Queue、Stack的特点与用法。
  • HashMap和HashTable的区别。
  • HashMap和ConcurrentHashMap的区别,HashMap的底层源码。
  • TreeMap、HashMap、LindedHashMap的区别。
  • Collection包结构,与Collections的区别。
  • try catch finally,try里有return,finally还执行么?
  • Excption与Error包结构。OOM你遇到过哪些情况,SOF你遇到过哪些情况。
  • Java面向对象的三个特征与含义。
  • Override和Overload的含义去区别。
  • Interface与abstract类的区别。
  • Static class 与non static class的区别。
  • java多态的实现原理。
  • 实现多线程的两种方法:Thread与Runable。
  • 线程同步的方法:sychronized、lock、reentrantLock等。
  • 锁的等级:方法锁、对象锁、类锁。
  • 写出生产者消费者模式。
  • ThreadLocal的设计理念与作用(为每一个使用该变量的线程都提供一个变量值的副本)。
  • ThreadPool用法与优势。
  • Concurrent包里的其他东西:ArrayBlockingQueue、CountDownLatch等等。
  • wait()和sleep()的区别。
  • foreach与正常for循环效率对比。
  • Java IO与NIO。
  • 反射的作用于原理。
  • 泛型常用特点,List<String>能否转为List<Object>。
  • 解析XML的几种方式的原理与特点:DOM、SAX、PULL。
  • Java与C++对比。
  • Java1.7与1.8新特性。
  • 设计模式:单例、工厂、适配器、责任链、观察者等等。
  • JNI的使用。
    JVM(推荐书籍:《深入理解java虚拟机》)
  • 内存模型以及分区,需要详细到每个区放什么。
  • 堆里面的分区:Eden,survival from to,老年代,各自的特点。
  • 对象创建方法,对象的内存分配,对象的访问定位。
  • GC的两种判定方法:引用计数与引用链。
  • GC的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
  • GC收集器有哪些?CMS收集器与G1收集器的特点。
  • Minor GC与Full GC分别在什么时候发生?
  • 几种常用的内存调试工具:jmap、jstack、jconsole。
  • 类加载的五个过程:加载、验证、准备、解析、初始化。
  • 双亲委派模型:Bootstrap ClassLoader、Extension ClassLoader、ApplicationClassLoader。
  • 分派:静态分派与动态分派。

JVM过去过来就问了这么些问题,没怎么变,内存模型和GC算法这块问得比较多,可以在网上多找几篇博客来看看:
Java 锁: https://juejin.im/post/5b90cd7c5188255c877e20c8#heading-8
Java NIO:http://ifeve.com/overview/
Java 内存泄漏:http://www.admin10000.com/document/5135.html
JVM自动内存管理:http://sishuok.com/forum/blogPost/list/339.html
java 强引用 软引用、弱引用、虚引用:http://my.oschina.net/ydsakyclguozi/blog/404389
arraylist和linkedlist Vector的区别:http://blog.csdn.net/renfufei/article/details/17077425
http://www.jb51.net/article/42767.htm
hashmap和hashtable concurrentHashMap: http://www.cnblogs.com/lianghui66/archive/2013/08/19/3267452.html
语言篇:C++

1.多态 概念和实现方式:  编译时多态和运行时多态,说出来就行了
2.STL容器 map的底层结构 红黑树  查找复杂度 lgn
3.多态中  父类析构函数可以设成虚函数,这是为了防止那种情况发生,可能造成什么后果:用父类指针 new一个子类对象,释放父类对象不会释放子类对象 有可能造成内存泄露。
4.为什么构造函数不能设成虚函数:因为多态分编译时多态和运行时多态,父类设成虚构造函数,编译时无法确定父类的具体 类型,所以会报错
1 虚析构、模板和宏
2 虚函数实现机制
3 vector与list的区别,map是如何实现的,查找效率是多少
4 extern 关键字有什么用
5 malloc和new的区别,能否malloc(1.2G)
类成员的访问权限底层是如何实现的(编译器级别)http://www.cnblogs.com/dragonfive/p/3265847.html
1.虚析构、模板 和 宏
2.虚函数实现机制(构造函数跟析构函数里面都可以调用虚函数,编译器不会报错!)
(是每个类用了一个虚表,每个类的对象用了一个虚指针指向这个表)
3.vector与list的区别,map是如何实现的(RBTree),查找效率是多少(logn)
区别是…一个是连续空间,一个是指针串起来的…
Map的实现是红黑树 RBTree
查找效率是 logn
4.extern 关键字有什么用?(以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义)
标识变量定义在其他文件
5.malloc和new的区别,能否malloc(1.2G)
malloc只分配空间不初始化,new既分配空间也初始化。可以。
6.多态性都有哪些?
静态多态和动态多态。
静态多态是函数重载
动态多态是虚函数
7.动态绑定怎么实现?
基类的指针或引用调用虚函数的时候发生动态绑定。
如果实际指向的是派生类的对象,就调用派生类的函数,如果是基类的,则调用基类的。
8.类型转换有哪些?(四种类型转换,分别举例说明)
1.static_cast:最常用的类型转换符,在正常状况下的类型转换,如把int转换为float,如:int i;float f; f=(float)i;或者f=static_cast<float>(i);
2.const_cast:用于取出const属性,把const类型的指针变为非const类型的指针,如:const int *fun(int x,int y){}  int *ptr=const_cast<int *>(fun(2.3))
3.dynamic_cast:该操作符用于运行时检查该转换是否类型安全,但只在多态类型时合法,即该类至少具有一个虚拟方法。dynamic_cast与static_cast具有相同的基本语法,dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。
4.reinterpret_cast:interpret是解释的意思,reinterpret即为重新解释,此标识符的意思即为数据的二进制形式重新解释,但是不改变其值。如:int i; char *ptr="hello freind!"; i=reinterpret_cast<int>(ptr);这个转换方式很少使用
9.操作符重载(+操作符),具体如何去定义?(让把操作符重载函数原型说一遍)
10.内存对齐的原则?(原则叙述了一下并举例说明)
11.模版怎么实现?
12.指针和const的用法?(就是四种情况说了一下)
13.虚函数、纯虚函数、虚函数与析构函数?(纯虚函数如何定义,为什么析构函数要定义成
虚函数)
14.内联函数(讲了一下内联函数的优点以及和宏定义的区别)
内联函数编译器会检查参数类型,宏定义不可以
内敛函数运行时可以调试,宏定义不可以
内联函数可以访问类的成员变量
15.const和typedef(主要讲了const的用处,有那些优点)
16.排序算法有哪些?快速排序怎么实现的?最好时间复杂度,平均时间复杂度
17.链接指示:extern “C”(作用)
18.c语言和c++有什么区别?(大体讲了 一下,继承、多态、封装、异常处理等)
19.qt类中的一些继承关系?
20.qt的信号与槽机制?
21.qt有那些类,控件?
22.plc是个什么玩意?
23.strcpy函数的编写?(这个函数很熟悉,后来阿里校招面试也让现场编写了)
24.数据结构中二叉树的非递归遍历?(现场画图举例讲解的,所以大家面试的时候尽量多
动笔)
25.c++中四种类型转换机制?
26.继承机制中对象之间是如何转换的?
27.继承机制中引用和指针之间如何转换?
28.虚函数,虚函数表里面内存如何分配?(这个考前看过了,答的还不错)
29.如何实现只能动态分配类对象,不能定义类对象?(这个牛客上的题目,我把如何只能
动态分配和只能静态分配都讲了一下)
30.stl有哪些容器,对比vector和set?
31.红黑树的定义和解释?
32.const关键字的作用?(const成员函数,函数传递,和define的区别)
33.静态成员函数和数据成员有什么意义?
34.模版特化的概念,为什么特化?
35.explicit是干什么用的?
36.strcpy返回类型是干嘛用的?
重复拷贝
37.内存溢出有那些因素?
(1) 使用非类型安全 (non-type-safe) 的语言如 C/C++ 等。 
(2) 以不可靠的方式存取或者复制内存缓冲区。 
(3) 编译器设置的内存缓冲区太靠近关键数据结构。
38.new与malloc的区别,delet和free的区别?
39.为什么要用static_cast转换而不用c语言中的转换?Static_cast 有类型检查,更安全
40.异常机制是怎么回事?
41.迭代器删除元素的会发生什么?
迭代器可能失效?
42.必须在构造函数初始化式里进行初始化的数据成员有哪些?
43.类的封装:private,protected,public
44.auto_ptr类:
其它:

1 红黑树的性质以及插入和删除
2 解析XML文件
3 千万级的用户,提供一个服务,该服务有很多模块,现在有一个底层模块需要优化,问怎么实现,在不影响其他服务模块以及用户体验的情况下。
4 卡特兰数以及公式推导(应多很多)
5 未知大小的文件,翻转整个文件
6 如果内存中有个cache存储qq号和最近登录时间问怎么样做hit和淘汰

补充内容 (2025-06-10 16:31 +08:00):

如果有帮助的话,烦请帮我加下米,加米不会扣自己的大米,谢谢大伙!

评分

参与人数 58大米 +64 收起 理由
holyblood2023 + 1 很有用的信息!
qpowei + 1 楼主/层主请继续!
laoshi606 + 1 赞一个
nthustar + 1 赞一个
Mansteinhyde + 1 赞一个

查看全部评分


上一篇:关于cs未来发展方向的疑问
下一篇:Generative AI沟通交流
秋波的电池 2025-6-8 13:24:56 | 显示全部楼层
本楼:   👍  1
100%
0%
0   👎
全局:   1
100%
0%
0
很有用的帖子,非常有价值
回复

使用道具 举报

zzzhhh3 2025-6-11 19:11:00 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   18
44%
56%
23
一点用没有。工作也好读博也罢,90%用不到,10%用到的都要比这里讲的深很多。
回复

使用道具 举报

RodeoCr 2025-6-11 12:00:29 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   7
100%
0%
0
我嘞个圣母玛利亚  这得整理多长时间
回复

使用道具 举报

 楼主| 会撒娇的松鼠 2025-6-8 09:50:46 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   27
96%
4%
1
大佬觉得不错辛苦给点米吧,跪求~

评分

参与人数 3大米 +3 收起 理由
uncle Max + 1 赞一个
Sh4Bee + 1 赞一个
小狼111111 + 1 赞一个

查看全部评分

回复

使用道具 举报

萌神考拉哥 2025-6-9 05:02:50 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   388
98%
2%
7
难得在地里看到点有用的帖子
回复

使用道具 举报

本楼:   👍  0
0%
0%
0   👎
全局:   4
80%
20%
1
很有用的帖子,很有价值
回复

使用道具 举报

uncle Max 2025-6-10 22:07:37 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   9368
95%
5%
445
收藏一下 以后再看
回复

使用道具 举报

nuekin 2025-6-11 08:26:34 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   407
97%
3%
11
~~很用心了~很赞
回复

使用道具 举报

本楼:   👍  0
0%
0%
0   👎
全局:   502
91%
9%
48
Nb zszs
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表