特意提醒:该文适合有了一定面试经验的人进行查漏补缺,因为我这里知识总结了常见的问题,并没有总结的答案,而这些答案都是在我发的这些面经当中,但是还是没有将答案单独拎出来,等下次有时间,将问题下的答案也补充一下,最近太忙了!
文章目录
- 在实习面试的过程的当中,常见的面试题
- 一、Java基础
- 1、为什么要重写equals方法?为什么重写了equals方法后,就必须重写hashcode方法?为什么要有hashcode方法?你能介绍一下hashcode方法吗?
- 2、Object方法有哪些方法?
- 3、==与equals有什么区别呢?
- 4、类加载的过程
- 5、JVM的内存模型以及内存结构
- 6、GC机制及GC算法,你熟悉的垃圾回收器?(常问CMS、G1,以及这两者的区别)
- 7、Java的基本数据类型
- 8、synchronized关键字以及底层实现原理,锁升级的原理
- 9、lock关键字以及底层实现原理
- 10、CAS的原理
- 11、synchronized与ReetrantLock区别?为什么有了synchronized,还要有lock这个关键字呢?
- 12、什么是悲观锁和乐观锁?哪些锁是悲观锁,哪些是乐观锁?
- 13、什么是线程安全?如何实现线程安全?对线程可见性是怎么理解的呢?
- 14、volatile关键字以及底层实现原理?以及volatile和synchronized关键字的区别?以及volatile是不是严格意义上的线程安全呢?volatile的作用有哪些呢?以及它是如何实现指令的重排序的呢?
- 15、i++是原子操作吗?
- 16、设计模式你了解多少?(这个至少你要了解一下单例模式,而且一定要会写两种单例模式,还有简单工厂模式,其他的不了解就算了。。。)
- 17、写一个单例模式,然后问你单例模式有哪些?以及他们的实现原理和特点(这个必须得对这两个单例相当熟悉)
- 18、集合你了解哪些呢?(List、map、set)
- 19、HashMap与HashTable的区别?
- 20、HashMap的底层实现原理,以及底层的数据结构,以及扩容机制,以及为什么HashMap是线程不安全的呢?HashMap对null值支持吗?它是如何实现对null值的支持的呢?
- 21、ConcurrentHashMap的底层实现原理以及数据结构(像这种集合回答问题时,一定要从jdk1.7和jdk1.8的角度去回答,这样就会显得你知识面更广些,否则你直接告诉别人是数组加链表或者红黑树,你觉得你这样说合适吗?如果你是面试官,你觉得这样的人你会想要吗?)
- 22、HashSet的实现原理
- 23、Java的反射
- 24、String、StringBuilder、StringBuffer的区别
- 25、说一下static关键字
- 26、ArrayList的扩容机制
- 27、线程的生命周期和状态(这个地方说的最好结合线程周期图来说,就是调用什么方法进入什么状态,尽量说详细点,还有一点要注意,就是跟进程的生命周期很像,但又有不同,好好体会)
- 28、什么是线程死锁?如何避免死锁呢?
- 29、线程池(说线程池的时候,可以从定义,优点,工作原理,其中几个核心参数,几个饱和策略说一下就差不多了)
- 30、定义String s = new String("abc"); 那么它在JVM中整个的内存分配的过程是怎么样的?
- 31、说一下lambda表达式
- 32、如何进行JVM参数的调优的?说一下你的经验
- 33、抽象类和接口的区别?
- 34、实现多线程的方式有哪些?
- 35、Java的I/O模型(BIO、NIO之类的)
- 36、为什么JVM中要有s0和s1这两个东西呢?
- 37、那你知道full GC和young GC的区别吗?
- 二、计算机网络
- 2.1 三次握手和四次挥手的过程?为什么需要三次握手,两次不行吗?为什么要四次挥手呢?
- 2.2 为什么需要等待2MSL,客户端才会处于关闭状态呢?
- 2.3 Time_wait状态发生在什么时候?Time_wait过多怎么办?一般是在客户端产生才有Time_wait的状态,那如果在服务端出现time_wait状态,那是为什么呢?如何去解决呢,你有什么什么思路吗?
- 2.4 HTTP的组成,状态码,HTTP请求过程,HTTPS需要几次握手才能真正地通信呢?有几个RTT(即来回)呢?
- 2.5 DNS的工作原理
- 2.6 HTTP和HTTPS的区别
- 2.7 HTTP1.0和HTTP1.1的区别?
- 2.8 HTTP1.0、HTTP2.0、HTTP3.0的区别
- 2.9 HTTP的长连接和短连接,以及他们的适用场景
- 2.10 输入一个url在浏览器框中,会发生什么呢?
- 2.11 什么是SSL/TLS呢?说一下对称加密和非对称加密?
- 2.12 HTTPS的加密过程
- 2.13 TCP与UDP的区别
- 2.14 TCP是如何保证可靠性传输的?
- 2.15 因为UDP是不可靠的,那应该如何保证UDP的可靠性呢?
- 2.16 OSI的七层网络模型,五层网络模型,以及各层之间对应的协议
- 2.17 ICMP协议
- 2.18 TCP的拥塞控制
- 2.19 DNS在传输层对应的协议是?
- 2.20 子网掩码、网关、cpu时间片的一些基本概念
- 2.21 请求重定向和请求转发有什么区别?
- 2.22 cookie和Session的作用分别是什么?有什么区别?
- 2.23 http,tcp,ip这三者之间的关系
- 三、操作系统
- 四、MySQL
- 4.1 MySQL采用什么引擎呢?他们之间有啥区别呢?
- 4.2 了解事物吗?说一说它的一些特性?
- 4.3 事物隔离级别有哪些呢?MySQL的默认隔离级别是哪一个呢?
- 4.4 为什么需要事物隔离级别呢?(并发事物会带来哪些问题呢?)
- 4.5 索引有哪些,底层的数据结构分别是什么呢?
- 4.6 那为什么MySQL中的索引的数据结构采用B+树,而不采用其他的呢?
- 4.7 建立索引时,应该注意什么呢?
- 4.8 为了避免查找的时候走全表,那应该怎么办呢?
- 4.9 一条sql查询语句是如何实现的呢?
- 4.10 sql语句执行的很慢,原因是什么呢?如何排查呢?
- 4.11 MyISAM和InnoDB使用的锁机制有哪些?以及他们之间的区别?
- 4.12 hash索引的应用场景,以及hash索引在硬盘上建立了索引了吗?hash索引的key是什么?
- 4.13 数据库中的日志你了解多少?(主要是这三个bin log,redo log,undo log,其他的当然也可以讲一下)
- 4.14 讲讲MVCC是什么?
- 4.15 char 和 varchar的最长的长度是多少?以及他们之间的区别?
- 4.16 字符集你了解多少?
- 4.17 需要查看sql语句执行计划,用什么指令呢?(explain)
- 4.18 从工程开发的角度去看,如果你去开发数据库需要注意哪些地方呢?
- 4.19 你设计表的时候,数据字段应该注意一些什么问题呢?
- 4.20 linux的文本编辑工具有哪些呢?
- 4.21 linux中性能分析或者查看性能的命令有哪些呢?以及磁盘的IO如何查看?
- 4.22 幻读和脏读有什么区别?
- 4.23 索引是不是建的越多越好?索引的性能开销主要体现在什么时候?
- 4.24 为什么需要使用联合索引?
- 4.25 数据库如何优化?数据库三范式是?
- 4.26 如何检测sql语句的运行时间
- 4.27 什么是数据库的存储过程?
- 4.28 幻读是什么?如何处理幻读?
- 4.29 sql慢查询问题
- 4.30 MySQL是如何保证事务的ACID特性呢?即如何保证原子性?如何保证持久性呢?如何保证隔离性?如何保证一致性?(即ACID是怎么实现的呢?)
- 五、数据结构与算法
- 5.1 说一下你知道的排序算法,以及它们的时间复杂度,空间复杂度
- 5.2 快排的最坏时间复杂度是多少?什么时候出现最坏时间复杂度?出现最坏的时间复杂度时,有什么方法能够优化它呢?
- 5.3 快排、堆排、归并排序的应用场景
- 5.4 平衡二叉树你了解多少?AVL树和红黑树的区别?以及它们的时间复杂度,一般应用在什么场景呢?
- 5.5 讲讲数据结构中的堆和栈的区别,以及内存中的堆和栈的区别?
- 5.6 跳表了解吗?
- 5.7 字典树了解吗?
- 5.8 b+树和b树的区别?
- 5.9 深度优先搜索(dfs)和广度优先搜索(bfs)的区别?以及dfs和bfs的底层数据结构?
- 5.10 红黑树中的一个结点存储了哪些数据呢?以及它是如何左旋和右旋的?
- 5.11 解决hash冲突的方式有哪些?以及影响hash查找的性能因素有哪些?
- 5.12 什么是排序算法的稳定性?说一下哪些排序算法是稳定的,哪些是不稳定的?
- 5.13 有没有那种排序算法不是基于元素比较的排序算法的呢?
- 5.14 b+树的所有叶子层是否是在同一层还是在不同层的呢?
- 六、场景题
- 6.1 如何在10亿数中找出前1000大的数?
- 6.2 如何判断一个数是否在40亿个整数中?
- 6.3 1000瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验。喝了无毒的药水第二天没事,喝了有毒的药水后第二天会死亡。如何在一天之内(第二天)找出这瓶有毒的药水?
- 6.4 布隆过滤器
- 6.5 洗牌算法(打乱扑克牌的顺序)
- 6.6 如何从10亿查询词找出出现频率最高的10个?
- 6.7 给定a,b两个文件,各存放50亿个url,每个url各占64个字节,内存限制是4G,让你找出a、b文件的共同的url?
- 6.8 给40亿个不重复放入unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?