你好,我是田哥 这是一位东北黑龙江同学的面经,也是他人生第一次面试经历。 来看看他面试遇到了些什么问题,然后,你也可以先看看题目,看看自己能回答上来多少。 精彩文章 dubbo源码深度分析:62个文档+中文注释+流程图+思维导图 面试问题
参考答案答案仅供参考,更多是希望能做到抛砖引玉。 1.自我介绍面试第一步:自我介绍。我们在上一篇文章中已经分享了“自我介绍”,这里就不再赘述了。 2.说一下你对java的了解?(大声)很多人可能面对这问题有点懵,不知道如何回答。其实,我们这里回答java的特性就行了。 3.你对java锁机制了解多少。Java中的锁无非就是JVM提供的synchronized关键字和JDK中的Lock接口实现; Lock接口实现的锁,基本上是基于AQS的实现的。 关于Java中的锁机制,我觉得可以归纳为下面三点:
4.说一下单例模式上一篇文章中是手写单例模式,这次只是说一下,岂不是更简单,关于单例模式,推荐看我的之前写过的文章: 5.MySQL有哪些查询关键字。SELECT、AS、Distinct、CONCAT 、desc 、FROM、WHERE、AND、LIKE、BETWEEN AND、LEFT 、RIGHT、INNER、JOIN等。 6.表连接。表连接分为两种:内连接和外连接。 (一)内连接内连接的特点 通过指定的条件去匹配两张表中的数据, 匹配上就显示,匹配不上就不显示,比如通过: 从表的外键 = 主表的主键方式去匹配 1、隐式内连接 特点:form子句后面直接写多个表名 使用where指定连接条件的这种连接方式是隐式内连接. 使用where条件过滤无用的数据 语法格式:SELECT 字段名 FROM 左表, 右表 WHERE 连接条件; 2、显式内连接 特点:使用 inner join ...on 这种方式, 就是显式内连接 语法格式:SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 条件 (二)外连接1、左外连接 特点:左外连接 , 使用 LEFT OUTER JOIN , OUTER 可以省略 ①以左表为基准, 匹配右边表中的数据,如果匹配得上,就展示匹配到的数据 ②如果匹配不到, 左表中的数据正常展示, 右边的展示为null. 语法格式:SELECT 字段名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 条件 2、右外连接 特点:右外连接 , 使用 RIGHT OUTER JOIN , OUTER 可以省略 ①以右表为基准,匹配左边表中的数据,如果能匹配到,展示匹配到的数据 ②如果匹配不到,右表中的数据正常展示, 左边展示为null 语法格式:SELECT 字段名 FROM 左表 RIGHT [OUTER ]JOIN 右表 ON 条件 7.说一下表不同连接有什么区别
8.说一下MVCC工作流程
MVCC:多版本并发控制。原理是:使用版本链+Read View 版本链 同一行数据可能有多个版本InnoDB数据表每行数据记录会有几个隐藏字段,row_id,事务ID,回滚指针。 1、InnoDB采用主键索引(聚簇索引),会利用主键维护索引,若表没有主键,就用第一个非空唯一索引,若没有唯一索引,则用row_id这个隐藏字段作为主键索引。 2、事务开启会向系统申请一个事务ID,严格递增,会向行记录插入最近操作它的那个事务的ID。 3、undolog会记录事务前老版本数据,然后行记录中回滚指针会指向老版本位置,如此形成一条版本链。因此可以利用undo log实现回滚,保证原子性,同时用于实现MVCC版本链。 Read View读已提交隔离级别下,会在每次查询都生成一个Read View,可重读读只在事务开始时生成一个Read View,以后每次查询都用这个Read View,以此实现不同隔离界别。 9.Spring Boot了解多少
Spring Boot 项目的启动注解是:
其中 @EnableAutoConfiguration 是实现自动配置的入口,该注解又通过 10.说一下AOP
11.Java集合有哪些?
12.Spring Boot的Controller有哪些注解?
Controller是Spring接受并处理网页请求的组件,是整个应用的入口 ,Spring Boot的Controller中经常会用到注解@Controller、 13.说一下MyBatis
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。 MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 14.MyBatis是对谁的封装MyBatis 是对jdbc的封装,它让数据库底层操作变得透明。MyBatis 的操作都是围绕一个sqlSessionFactory实例展开的。MyBatis 通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。 15.Mybatis的xml文件有哪些标签。Mybatis中有很多标签,比如: 16.说一下项目那就如实的说说你的项目呗,讲清楚项目是干啥的,你负责的什么?用到了哪些技术栈?这些技术栈用来解决了什么问题?项目并发如何?QPS、TQS、日活跃用户,订单数量等,反正能用数据说的尽量用数据去说。 17.idea会用吗?这只是个工具,通常都是使用IDEA或eclipse,但是建议使用IDEA。 18.SVN会用吗?svn可能很多小伙伴并没有用过,因为现在大部分都流行Git,这个实话实话,可能会问一些命令,或者仓库,依赖相关问题。 给大家推荐文章: 19.linux了解多少?Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
20.你还知道哪些设计模式?
单例模式、工厂模式、模板方法模式、装饰器模式、门面模式、代理模式、适配器模式、原型模式、.... 给大家推荐我之前分享过的设计模式系列文章,掌握下面这11种,面试基本上没问题了: 21.期望工资
回答样本一:我对工资没有硬性要求,我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多。 回答样本二:我受过系统的软件编程的训练,不需要进行大量的培训,而且我本人也对编程特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。 回答样本三:如果你必须自己说出具体数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值。 22.有过培训经历吗问这个问题感觉是个坑,你要是自己参与过培训,那证明你在学校没学到东西?是不是没参加培训更好?自行脑补,很多人对培训还是带有些不一样的眼神。 23.前端你了解多少通常HTML、CSS、Jquery,这是肯定都熟悉的哈,还有其他比如Vue之类的知道的话更好。 24.Jquery呢
25.大概多久到岗分析:不要以为hr问了这个Offer就已经攥到手里了!可能终极的考验就在这里哦!
范例1:随时都行!明天就来! 范例2:大概要两个月之后吧,我想给自己放个假。 评论:如果你说随时可以来,虽然表现了积极性,但是另一方面证明你对老东家“薄情寡义”,没有责任心。而拖个一两个月才入职?开玩笑,企业怎么会为你保留这么久这个职位呢?
“我会尽快处理好自己手头的工作,完成交接后就来入职,这大概需要一周到两周左右。” 评论:一周或两周是一个大概的时间,也是大部分公司可以容忍的时间,具体问题还需要求职者和新东家具体协商。总之,你需要表达自己愿意早点来的意愿,但同时又要为入职手续的办理准备足够充足的时间。 26.这个项目有遇到过哪些问题,难点
27.你对Redis很熟悉?
Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过10万次读写操作,是已知性能最快的Key-Value DB。 Redis具有如下四种特点:
28.Spring Boot怎么整合Redis1、pom.xml中引入Redis的starter 2、配置文件中配置Redis的信息(IP、port等连接信息) 29.学习成绩怎么样。赶紧秀秀你的成绩吧,没有秀的,很尴尬!哈哈,那就说自己没有挂科也可以。
成绩不突出的同学,我给你一个回答方式:
好了,今天的面经就分享到这里。 精彩文章 |
|