因为是实习生面试,而且是一面,所以问的问题也不算太难,面试时间也没有太长,只有半个小时,总共问了18个问题。
1.问简历中的项目
这个基本每场面试都会问的,一般都问最近做的项目,主要用到什么技术,功能是什么,遇到什么问题,怎么解决的,有什么亮点等等,只要项目确实是你自己亲自参与开发的,这个一般都没什么问题。
2.Redis 实现并发的几种方式
- 设置主从节点
- 分布式锁
3.Redis 相比其他框的优缺点 (memached)
- memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰富的数据类型
- redis 的速度比 memcached 快很多 redis 的速度比 memcached 快很多
- redis 可以持久化其数据 redis 可以持久化其数据
- Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能 读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。
4.Redis 的持久化策列
RDB(Redis DataBase:在不同的时间点将 redis 的数据生成的快照同步到磁盘等介质上):内存到硬盘的快照,定期更新。缺点:耗时,耗性能(fork+io 操作),易丢失数据。
AOF(Append Only File:将 redis 所执行过的所有指令都记录下来,在下次 redis 重启时,只需要执行指令就可以了):写日志。缺点:体积大,恢复速度慢。
bgsave 做镜像全量持久化,aof 做增量持久化。因为 bgsave 会消耗比较长的时间,不够实 时,在停机的时候会导致大量的数据丢失,需要 aof 来配合,在 redis 实例重启时,优先使 用 aof 来恢复内存的状态,如果没有 aof 日志,就会使用 rdb 文件来恢复。Redis 会定期做 aof 重写,压缩 aof 文件日志大小。Redis4.0 之后有了混合持久化的功能,将 bgsave 的全量 和 aof 的增量做了融合处理,这样既保证了恢复的效率又兼顾了数据的安全性。bgsave 的 原理,fork 和 cow, fork 是指 redis 通过创建子进程来进行 bgsave 操作,cow 指的是 copy on write,子进程创建后,父子进程共享数据段,父进程继续提供读写服务,写脏的页面数据 会逐渐和子进程分离开来。
5.Redis 的数据类型
Redis支持我中数据类型:String、Set、hash、SortedSet、List
6.MySQL 乐观锁和悲观锁
7.如何查看 SQL 的执行计划
- Set AutoTrace on
- explain plan for [你的sql语句]
8.Java 类加载机制
主要是双亲委派机制和沙箱安全机制。Java 细聊JVM之类加载器
9.JVM 内存模型
这道题也基本是面试必问,所以必须掌握的一道题。主要分为三大部分:类加载器、运行时数据区、执行引擎。谈谈 Java Virtual Machine 以及 GC
10.垃圾回收算法及应用区域
四大垃圾算法,以及分代收集算法。Java 细聊JVM之类加载器
11.HashMap 和 HashTable 的区别
12.String、StringBuilder、StringBuffer 的区别
13.冒泡排序、插入排序、归并排序
14.网络模型
OSI和TCP/IP的模型,OSI七层,TCP/IP四层。
15.TCP协议和IP协议在那一层
TCP在传输层,IP协议在网络层。
16.常用设计模式
设计模式总共分为三大类,23小类,常用的话就是单例、工厂、建造者、原型、适配器等。设计模式专栏
17.红黑树的概念
红黑树是类似与AVL(平衡二叉树)的一种树结构,出现的原因主要是为了弥补AVL树的不足,它比AVL的条件更为严格。java 中 jdk 8 以后 HashSet 引入了红黑树,主要是为了解决链表环形问题。
18.班级成绩排名
这个如是回答就可以了,瞎说也是没有用的。
从这次面试来看大厂一般比较重基础,不会问太多框架类的东西,主要考的就是计算机相关课程、java 基础、java 底层原理相关的东西。