后端开发面试自我介绍_Java后端面试总结

这篇博客总结了Java后端开发面试中常见的问题,包括自我介绍、RESTful API理解、cookie与session的区别、乐观锁与悲观锁、MyBatis与SpringMVC的工作原理、缓存问题以及JVM和数据库相关知识。建议面试者深入理解并熟练掌握这些知识点。

以下记录和总结一下近期面试时遇到的一些问题,供后期查阅,同时,希望对正在求职的小伙伴们有所帮助。

1.自我介绍

介绍突出以下几点:姓名、毕业院校、专业、熟悉的技术栈、做过的项目简介、自己在项目中做的工作、自己面试的岗位及自己的优势介绍。时间把控在35-60秒即可。

2.谈谈项目中自己印象深刻的地方

根据实际情况,自由发挥即可

3.谈谈项目中的核心点和难点

根据实际情况,自由发挥即可

4.谈谈你对RESTful API风格的理解,并根据业务设计一个接口

在前后端分离架构未出现之前,我们要开发WEB端的应用,更多是通过jsp或者模板引擎去实现,这样会有两个弊端:1.前后端代码混在一起,不利于后期维护; 2.前后端分工不明确。前后端分离的架构强调前端和后端各思其职,后端主要负责业务逻辑的处理,前端负责界面展示,前后端通过api去通信,RESTful API规定了api的一些约束和设计风格。我理解的是它主要体现在两个地方,1.每个url表示一种资源,体现在url语义明确,url中尽可能用名词去表示资源,我们对资源的增、删、改、查等操作,用HTTP头表示,比如POST、DELETE、PUT、GET等。2.url的返回格式统一,用xml或者json,我在开发中用的比较多的是json格式做返回结果,json格式中包括状态码、消息、数据体等字段。

5.cookie和session的区别

HTTP协议是无状态的,而我们业务中,有一些场景是需要记录用户状态的,比如登陆、购物车等,session和cookie用于做会话管理,记录状态信息。

区别:session保存在服务器端;cookie保存在客户端,

工作流程:第一次请求时,服务器端会生成session,并将sessionId通过cookie回给客户端,下一次请求时,cookie会携带sessionId给服务器端,服务器端通过比对sessionId确认用户。

6.数据库中的乐观锁和悲观锁

乐观锁:不给数据表加锁,任何事务都能够同时访问数据;实现时,我们通常在表中添加一列version或时间戳,version用的比较多,更新数据前,会获取version值,更新时,会判断当前行的version值是否和之前的version值相等,相等则更新,并且version值+1,不想等则不更新。优势:避免了加锁造成的吞吐量下降的问题,缺点:需要手动实现,仅作用于特定的业务场景。适用于读多写少的场景。

悲观锁:给数据表加锁,确保事务多数据的更新是有序的,像读锁、写锁、表锁、行锁等都是悲观锁。优势:保证了数据的安全性;缺点:并发大的情况下,其它事务获取不到锁,会影响我们系统的吞吐量。适用于写多读少的场景。

7.索引类型

8.MySQL中用到的数据结构及它们之间的区别

9.MyBatis中#和$的区别

10.MyBatis中的延时加载机制

11.SpringMVC的工作原理,描述代码中如何获取handler

12.介绍一下项目的部署架构(前台请求到访问数据库的中间流程)和技术栈

13.缓存击穿、缓存穿透、缓存雪崩

缓存击穿:

定义:大量并发请求在缓存服务器中未命中,转去数据库了,给数据库带来了访问压力

原因:缓存服务器,key过期了

解决方案:

1.根据业务场景,尝试设置热点数据永不过期。

2.双重检查锁(附伪代码)

if (null == getFromRedis()) {

lock;

if (null == getFromRedis()) {

getFromMysql();

updateToRedis();

}

unlock();

}

return getFromRedis();

优点:执行了一次MySQL查询,其余请求正常走Redis,缓解了MySQL的压力;锁粒        度小;

14.MySQL能实现分布式锁吗

15.MySQL最左匹配原则,最左匹配原则可能导致哪些情况下索引不会被命中?最左匹配原则的原因?

15.谈谈对AOP的理解

纵向编程比如继承类,实现接口等方式,解决不了的一些问题,可以通过横向编辑去解决

16.Redis是单线程的吗

17.JVM调优

18.JVM内存模型和垃圾回收机制

19.有没有遇到过线程池被撑爆的问题

20.Spring事务机制

总结:

1.要把面试官问的问题向你擅长的方向引导,把写在简历上的知识点学透彻

2.面对问题时,仔细分析问题,然后顺着分析的思路摸索记忆,找到答案(ps:有时候一些东西本来知道,一时记不起来了,加上紧张的情绪,可能就回答不好问题)

3.回答问题时,尽量把自己都知道的点有条不紊地讲出来(毕竟有内容总比没有内容强)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值