记2020-10 面试知识点总结 应届生
面经基础(仅针对应届)
仅把自己最近的面试亲历为主,做以记录,用作后续复习之用,也仅可只供他人参考。还请大家以自身实际院校水平,个人能力,应聘公司规模做具体调整。
本文偏重基础,指导大体方向,在细节上不会过多赘述。拔高的 jvm 缓存 cloud redis 分布式 集群 负载均衡 等技术待n年后再总结。
面试注重技能
在面试过程中遇到最多的问题:
- java基础;
- 数据库 ;
- 设计模式;
- 框架 ;
- linux指令
个人参加面试使用的项目 : 在线书城.
仍有部分不够完善,只可参考。
java基础
初级部分
- 八大类型
- java三大特性
封装 继承 多态
- 对面向对象的理解
个人认为面向对象核心是 封装。提到代码复用性
- 对多态的理解
建议参考c++中的虚函数
碰到笔试手写虚函数实现多态的
- String 常用的方法
- String StringBudiler StringBuffer 区别
String 拼接字符串会浪费资源,
StringBudiler StringBuffer 大体实现方法相似,节约内存资源。最大区别:Budiler实现方法是有同步锁的,Buffer没
- java跳出多层循环
return 返回 跳出循环
定义loop1: break loop1;跳转到指定的循环层次
高级部分
- 集合
-
List
-
Set
List Set 区别:随机存取,元素重复性
ArrayList linklist 区别:
底层实现,内存结构。
-
Map
List 和 Map 区别
HashMap 底层源码的一些问题
在理解集合时建议深入源码。
- io流
- 流的分类:
字符流 字节流
- 反射机制
反射的好处
可参结合ioc思想进行解答
- 获取类对象的方法
Class.forName(Xxx)
Class cls = Xxx.class;
Class cls = xxx.getClass();
- 多线程
如何写一个线程类:
`继承Theard 类
实现Runnable() 接口
启动线程的方法:
theard.start( )
线程实现同步方法。
数据库
mysql oracle
- 基础增删改查语句
-
脏读,不可重复读,幻读
-
查询时间函数
- 查询同名的人(不清楚那个名字重复)
使用 group by name 粗略实现
- 事务
了解一下事务特性及机制
- 动态sql
用的是 mybatis 标签 where if 等。
#{ } 实现预编译,防止sql注入。
- 分页
四大隔离级别
读未提交
读已提交 – 多数数据库默认
可重复读 – mysql默认级别
串行化
设计模式
单例懒汉饿汉模式
工厂模式
动态代理
…
这些简单的基础设计模式建议熟悉。
框架
常用的 ssm = spring+ spring mvc + mybatis; spring boot
- pom文件作用
- spring 和spring boot 区别
spring boot 是对spring框架的精简和集成。精简配置文件,集成各种约定。
- ioc aop 思想
- spring好处
- mybatis框架本质是jdbc工具
GC
守护(精灵)线程。
我们可以调用System.gc()方法建议gc过来清理垃圾,但绝不是指示gc过来清理垃圾。gc会判断当前垃圾量,不达到gc的阈值,gc不会清除。故,调用方法,不等于gc一定会干活。
了解 强引用,弱引用。
常见的垃圾清理方法
标记清除
复制
标记整理
常见的linux指令
这里了解常用指令,会是一个加分点。建议熟悉 :
ll ls vi cd cp rm cat tail su sudo man pwd touch mkdir ps top kill 等