背景:西安某211大三学生,大二开始学习java,这几天恶补jvm和juc还有数据库相关的知识。
面经是凭借回忆写的,可能顺序会有点乱。电话面录了音,但是好像没保存成功。
一面 (2021.3.11)40min + 90分钟做题
一上来问项目,简历上写的是springMVC的一个项目。
面试官人非常nice。
但刚开始挺严肃,非常快的在问项目的各种业务,感觉是在检查是不是自己真的实现过。搞的有点紧张。
具体业务回答了一遍以后开始进入答题环节,语速也放慢了下来。氛围逐渐轻松。
说说对springMVC框架的理解。
spring框架有哪些好处。如何简化开发的。
说说对依赖注入的理解。
依赖注入的方式。
说说对ioc的理解。
讲一下类的生命周期。
说说beanFactory。
DispatcherServlet是什么,前端请求发送给DispatcherServlet后的流程是什么。(看面经的好处)
mybatis了解吗?说说对mybatis的理解,框架有什么好处,怎么样和数据库连接?
使用了什么数据库?(mysql)
讲讲mybatis的缓存。
讲一下索引的创建过程。(有点懵,讲了索引的底层)
如何进行索引的调优,怎么知道创建的索引是否加快了查询。(不会)
项目里一共有多少张表,分别存在什么样的联系。
怎么样实现多线程。
知道OOM吗,java有gc为什么还会出现oom?怎么分析oom出现的位置。
final,finally,finalize
java8有什么新特性。
知道streams吗,具体怎么用。
怎么解决死锁问题,死锁出现的最重要原因是什么?
讲一讲熟悉的设计模式(单例,工厂,观察者,适配器,代理模式)
讲一讲单例有哪几种实现。(饿汉,懒汉..居然不接着问dcl)。
讲一讲乐观锁,悲观所的区别。
数据库事务有哪几种隔离级别。
说一下自己的优势,不足。
以后的职业规划。
总体来说感觉一面并没有问的很深入,在考察知识面的广度。基本上都是java相关的知识,操作系统和计网涉及的较少。
接着甩了一道题(伯乐平台)。给一个半小时的时间。
评测题目:Log日志分析
Log文件一行是一条记录,字段中间用空格分开 如:
ReadError: path not find error
WriteError: file not exist error
...
假设第一个字段(:前面的字段,ReadError、WriteError等)是错误类型,总共有10个日志文件,filePath1, filePath2... filePath10
需求是,多线程并行处理10个文件,汇总之后,返回出现次数最多的10种错误类型及其个数。
比如:
1. 错误类型: ReadError 总出现次数: 1005
2. 错误类型: WriteError 总出现次数: 903
...
注: 假设内存足够
多线程+hashmap+大根堆。
全部评论
(4) 回帖