你好,我是田哥

这是一位东北黑龙江同学的面经,也是他人生第一次面试经历。

来看看他面试遇到了些什么问题,然后,你也可以先看看题目,看看自己能回答上来多少。

精彩文章

资料:秒杀系统设计,文档、代码和视频

用Spring Boot搞了个医院项目,附源码!

海康 面试:说说MyBatis 插件机制

QPS、TPS、并发用户数、吞吐量关系

1000多道面试题,多久能背完?

dubbo源码深度分析:62个文档+中文注释+流程图+思维导图

面试问题

  • 1.自我介绍(就说了来自哪,想找java)(停顿一会儿)

  • 2.说一下你对java的了解?(大声)

  • 3.你对java锁机制了解多少。

  • 4.说一下单例模式

  • 5.MySQL有哪些查询关键字。

  • 6.表连接。

  • 7.说一下表不同连接有什么区别。(开始找到状态。)

  • 8.说一下MVCC工作流程。(结果说成Spring MVC的中央管理器工作流程)

  • 9.Spring Boot了解多少。(还简单说了一下自动配置原理)

  • 10.说一下AOP

  • 11.Java集合有哪些。

  • 12.Spring Boot的Controller有哪些注解。

  • 13.说一下MyBatis

  • 14.MyBatis是对谁的封装

  • 15.Mybatis的xml文件有哪些标签。

  • 16.说一下项目。

  • 17.idea会用吗

  • 18.SVN会用吗

  • 19.linux了解多少。

  • 20.你还知道哪些设计模式。

  • 21.期望工资

  • 22.有过培训经理吗

  • 23.前端你了解多少

  • 24.Jquery呢

  • 25.大概多久到岗

  • 26.这个项目有遇到过哪些问题,难点

  • 27.你对redis很熟悉?

  • 28.Spring Boot怎么整合redis

  • 29.学习成绩怎么样。

面的是一家小厂,非常小,说是系统开发部其实就是几个人。毕竟第一次面试,咬字不禁不清晰,还有有很多口音。回答得也不好,就这样还给我过,看出来是挺缺人的。招聘要求上是说要会用redis,然后去面试结果redis没怎么问,就问怎么整合,亏我看了那么多遍。xxx上说3k,最后结果说我一周只能去4天给2.2k。然后我就拒绝了。

参考答案

答案仅供参考,更多是希望能做到抛砖引玉。

1.自我介绍

面试第一步:自我介绍。我们在上一篇文章中已经分享了“自我介绍”,这里就不再赘述了。

2.说一下你对java的了解?(大声)

很多人可能面对这问题有点懵,不知道如何回答。其实,我们这里回答java的特性就行了。

3.你对java锁机制了解多少。

Java中的锁无非就是JVM提供的synchronized关键字和JDK中的Lock接口实现;

Lock接口实现的锁,基本上是基于AQS的实现的。

关于Java中的锁机制,我觉得可以归纳为下面三点:

  1. Java对象头mark word记录锁状态,是无锁、偏向锁、轻量级锁还是重量级锁

  2. 锁机制本质根据资源竞争的激烈程度 进行锁升级的过程

  3. 升级的顺序:无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁

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工作流程

很多人容易把这个理解成 Spring MVC,这个千万要注意。

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 项目的启动注解是:@SpringBootApplication,其实它就是由下面三个注解组成的:

  • @Configuration

  • @ComponentScan

  • @EnableAutoConfiguration

其中 @EnableAutoConfiguration 是实现自动配置的入口,该注解又通过 @Import注解导入了AutoConfigurationImportSelector,在该类中加载META-INF/spring.factories的配置信息。然后筛选出以EnableAutoConfiguration为key的数据,加载到 IOC容器中,实现自动配置功能!

10.说一下AOP

这个问题,在上一篇文章中已经分享过了,这里不再赘述。

11.Java集合有哪些?

这个上一篇也分享过了,跳过!

12.Spring Boot的Controller有哪些注解?

先来吐槽一下,这面试题想说什么呢?@RestController、@Controller、@GetMapping、@RequestMapping、@ResponseBody?注解挺多的,为什么要和Spring Boot扯上关系呢?

Controller是Spring接受并处理网页请求的组件,是整个应用的入口 ,Spring Boot的Controller中经常会用到注解@Controller、@RestController@RequestMapping@RequestBody等 。

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中有很多标签,比如:<mapper>、<resultMap>、<insert>、<delete>、<update>、<select>、<if>、<where>、<choose>、<when>、<otherwise>、</trim>、<foreach>、<selectKey>等等

16.说一下项目

那就如实的说说你的项目呗,讲清楚项目是干啥的,你负责的什么?用到了哪些技术栈?这些技术栈用来解决了什么问题?项目并发如何?QPS、TQS、日活跃用户,订单数量等,反正能用数据说的尽量用数据去说。

17.idea会用吗?

这只是个工具,通常都是使用IDEA或eclipse,但是建议使用IDEA。

18.SVN会用吗?

svn可能很多小伙伴并没有用过,因为现在大部分都流行Git,这个实话实话,可能会问一些命令,或者仓库,依赖相关问题。

给大家推荐文章:

Git 常用命令,建议收藏 !

顺丰面试官:你知道哪些Git命令?

用21张图,把Git 工作原理彻底说清楚

19.linux了解多少?

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

把你知道的都说说

20.你还知道哪些设计模式?

那么多设计模式,你就说你相对比较熟悉的就行

单例模式、工厂模式、模板方法模式、装饰器模式、门面模式、代理模式、适配器模式、原型模式、....

给大家推荐我之前分享过的设计模式系列文章,掌握下面这11种,面试基本上没问题了:

设计模式 系列1: 装饰器模式

设计模式系列2:单例模式!

设计模式系列3:原型模式 

设计模式系列4: 代理模式

设计模式系列5:观察者模式

设计模式系列6:责任链模式

设计模式系列7:享元模式

设计模式系列8:代理模式

设计模式系列9:委派模式

设计模式系列10:策略模式

设计模式系列11:模板方法模式

21.期望工资

其实,一般技术面试官不太问这个问题,但是这位同学面试的是一家小公司,所以,可能面试官就是合伙人之一,甚至是boss

如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱,他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。

回答样本一:我对工资没有硬性要求,我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多。

回答样本二:我受过系统的软件编程的训练,不需要进行大量的培训,而且我本人也对编程特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。

回答样本三:如果你必须自己说出具体数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值。

22.有过培训经历吗

问这个问题感觉是个坑,你要是自己参与过培训,那证明你在学校没学到东西?是不是没参加培训更好?自行脑补,很多人对培训还是带有些不一样的眼神。

23.前端你了解多少

通常HTML、CSS、Jquery,这是肯定都熟悉的哈,还有其他比如Vue之类的知道的话更好。

24.Jquery呢

面试官既然在问这问题,我猜这位朋友没有回答Jquery,导致面试官追问。

25.大概多久到岗

分析:不要以为hr问了这个Offer就已经攥到手里了!可能终极的考验就在这里哦!

✕ 错误回答

范例1:随时都行!明天就来!

范例2:大概要两个月之后吧,我想给自己放个假。

评论:如果你说随时可以来,虽然表现了积极性,但是另一方面证明你对老东家“薄情寡义”,没有责任心。而拖个一两个月才入职?开玩笑,企业怎么会为你保留这么久这个职位呢?

✔正确回答

“我会尽快处理好自己手头的工作,完成交接后就来入职,这大概需要一周到两周左右。”

评论:一周或两周是一个大概的时间,也是大部分公司可以容忍的时间,具体问题还需要求职者和新东家具体协商。总之,你需要表达自己愿意早点来的意愿,但同时又要为入职手续的办理准备足够充足的时间。

26.这个项目有遇到过哪些问题,难点

这问题其实应该伴随着前面项目介绍的时候问,我们需要提前准备好几个问题,至少三个问题。

问题,如何排查的?解决方法有哪些?最后为什么选择这个方案?心得体会

27.你对Redis很熟悉?

Redis差不多已经是开发者标配了,所以,如果回答说不知道,给人的感觉会很不好的,毕竟这种小公司重点是要干活,不会给你太多时间去学习。

Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过10万次读写操作,是已知性能最快的Key-Value DB。

Redis具有如下四种特点:

  1. Redis是一个高性能key/value内存型数据库。

  2. Redis支持丰富的数据类型 。

  3. Redis支持持久化 。

  4. Redis单线程,单进程。

  5. Redis有多种高可用解决方案

28.Spring Boot怎么整合Redis

1、pom.xml中引入Redis的starter

2、配置文件中配置Redis的信息(IP、port等连接信息)

29.学习成绩怎么样。

赶紧秀秀你的成绩吧,没有秀的,很尴尬!哈哈,那就说自己没有挂科也可以。

总之,优点要如实说,要不然在以后的工作中会穿帮的,缺点要挑着说,不要让人家觉得你没有诚意,态度要诚恳,把一个很小的缺点仔细的分析,深刻的检讨,不用真的实诚到把自己的老底都交出去,把握好这个度吧

成绩不突出的同学,我给你一个回答方式:

我的成绩比较一般。我在学校里除课堂上学习的知识外,比较喜欢扩充自己的其他方面的知识,对XX类的书也看了不少。

好了,今天的面经就分享到这里。

更多面试题和答案:http://woaijava.cc/mianshi/index

本人专门做面试辅导、技术分享和技术指导,欢迎各位加入我的知识星球,主要内容:

1、免费 修改简历

2、免费 模拟面试

3、免费 使用专属博客(www.woaijava.cc)

4、免费 使用刷题网站(已更新1046题)

5、免费 无限次数技术提问

6、共享 大量总结好的资料

7、共享源码分析系列(mybatis源码分析、dubbo源码分析、手写Spring IOC、AOP、MVC、手写RPC框架... )、项目实战(电商项目、医院项目、个人博客、OA系统)等

8、专门技术探讨群

扫下方二维码即可加入:

如果学生经济压力较大的,加我weixin:tj20120622 。可以获取优惠。

精彩文章

免费使用!在线刷Java后端面试题

面试官:MQ 消息丢失、重复、积压问题,如何解决?

手写RPC框架,真不是为了装13!

坚持一年,成功进入前50名!

普通二本,毕业就14k,还不满意!

第一次面试,面完,直接拒了!相关推荐

  1. 关于第一次面试总结(嵌入式软件开发工程师)

    第一次面试总结 首先,笔试: 一.问死锁是什么,死锁的原因有哪些?死锁的四个必要条件是神马?如何解开死锁? 死锁: 指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力 ...

  2. 第一次面试amp;第一次霸面

    哈哈哈哈,第一次面试和第一次都献给了CVTE! CVTE的招聘流程有点特别:网測-- 一面--笔试--二面--offer 想起网測那天就心酸.那先在做第三部分的专业測试.计时器突然出错........ ...

  3. 菜鸟的第一次面试(凉凉凉凉凉凉)

    首先都是正常流程,自我介绍,介绍完就开始了和面试官的交流. 1.面试官问我,你是学后端的,怎么选择了前端呢? (我的专业是软件工程,总会被人这么问,但是是说的软件工程不学前端的??然后我就回答说,自己 ...

  4. 面经(一)人生第一次面试—一首凉凉送给自己

    因为错过秋招,现在才开始找工作,对自身的定位也不足,不知道到底可以做什么.瞎投了一通简历,下载了一堆求职app.某app上,某游戏公司hr小姐姐找上了我,问我要了简历,一开始我是想找C++开发岗的,后 ...

  5. 第一次面试实习-Web前端开发

    第一次面试总结 背景情况: 1.室友推荐,12月推送了需要实习生的师哥的微信(当时准备考研期间) 2.推了几次机会,但暂时没空没有面试 3.3月考研成绩出来后,没过国家线,打算考教资(3月12号)后找 ...

  6. 记录我的第一次面试(C++实习生)

    记录我的第一次面试(C++实习生) 前两天在BOSS直聘上上传了自己的简历,投递的方向是C++实习生,一天就接到了HR的消息,让我准备一下初面.虽然知道自己有很多的不足,也知道自己大概率会失败,但是我 ...

  7. 自投递简历以来的第一次面试

    投完简历之后HR小姐姐接着就安排了面试,原定时间是今天下午六点,我五点五十进的会议,结果等到六点二十(真的有点不耐烦了说实话)面试官打电话过来了说网络不是很好,所以改成电话面试了. 1.session ...

  8. 人生中第一次面试-----字节跳动面试经验总结

    20190801 我经历了人生中的第一次面试,一面感觉还行,二面有点惨.(一面和二面是连在一起的),三面也很惨,四面也好惨.然后坚持到hr面. 未来的事情好多不确定,但是唯一要做的还是要不断充实自己, ...

  9. 谨纪念第一次面试,电话面试,百度一面。。

    期中考试最后一科前收到一个电话说明天百度电话面试,当时有点激动,马上准备准备,多好的机会当然要好好把握..之后上了百度实习生招聘官网,发现自己投的简历'运维部_实习平台研发Java工程师'被挤到下面去 ...

最新文章

  1. php 爬虫_Scrapy 爬虫完整案例-基础篇
  2. java的hr样式,spring+spring mvc+mybatis开发java医院HR人事管理系统(加强版本+ shiro)...
  3. windows 获取系统CPU和进程CPU 内存等信息
  4. 【LeetCode】剑指 Offer 37. 序列化二叉树
  5. 拓端tecdat|Python、R对小说进行文本挖掘和层次聚类可视化分析案例
  6. CreateProcess()无法启动应用?
  7. Java在线反编译网站
  8. 打游戏用什么蓝牙耳机好?英雄联盟手游推荐蓝牙耳机
  9. Gif图片分解(支持批量)
  10. 2021-04-11
  11. 长江大学一键评教项目简要分析
  12. scratch编程我的世界3D史蒂夫
  13. win10锁屏后默认1分钟进入睡眠状态的解决办法
  14. 上架CiscoWS-C4948E设备及升级IOS
  15. 重庆APP开发价格费用如何计算?
  16. typescript 装饰器
  17. xp系统从u盘启动计算机,U盘启动安装XP系统-从U盘启动给上网本安装XP
  18. comsol-添加线圈几何分析
  19. java hasnext_Java Page.hasNext方法代码示例
  20. Flash Switcher(一) - 快捷Tab切换器

热门文章

  1. springbbot运行无法编译成功,找不到jar包报错:Error:(3, 46) java: 程序包org.springframework.context.annotation不存在
  2. Backup Exec 数据库空间不足
  3. java计算机毕业设计驴友社区网站录屏源程序+mysql+系统+lw文档+远程调试
  4. Java课程设计——学生信息管理系统
  5. Class.isArray 的判断逻辑
  6. Django—中间件详解
  7. Office总是无响应的解决办法
  8. networkx计算边的重要性:边介数或者中介中心性edge_betweenness
  9. postsql查询近一年的数据
  10. 论文的总体结构及质量控制