Java岗大厂面试百日冲刺Day49— 实战那些事儿5 (日积月累,每日三题)
Posted _陈哈哈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java岗大厂面试百日冲刺Day49— 实战那些事儿5 (日积月累,每日三题)相关的知识,希望对你有一定的参考价值。
大家好,我是陈哈哈,北漂五年。相信大家和我一样,
都有一个大厂梦
,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题
的形式,带你过一遍热门面试题及恰如其分的解答。
一路走来,随着问题加深,发现不会的也愈来愈多。但底气着实足了不少,相信不少朋友和我一样,日积月累才是最有效的学习方式!想起高三时一个同学的座右铭:只有沉下去,才能浮上来。
共勉(juan)。
作者:爪哇小白2021
—— 博客地址
本栏目Java开发岗高频面试题主要出自以下各技术栈:Java基础知识
、集合容器
、并发编程
、JVM
、Spring全家桶
、MyBatis等ORMapping框架
、mysql数据库
、Redis缓存
、RabbitMQ消息队列
、Linux操作技巧
等。
今天,我想跟你聊几道老面试官喜欢问的问题,贼得很。
面试题1:谈谈你项目中遇到的最大困难或挑战是什么,你是如何解决的?
记得刚入行时听前辈说,干这行得踏实学,别想着糊弄谁,真厉害的三句话就知道你的底了
。这话不错,一名经验老道的面试官,往往几个问题就足以对一个人下判断。有些面试中你自以为圆过去的谎,或许对方早看清了你的底牌,大家都是打工仔,人艰不拆罢了。
这个问题看似普通,实际能抖出你出很多东西。
看看你所认为的难题有多难
,纵向技术深度怎么样?顺便听听你的经历和故事,吃个瓜。- 问你怎么解决的。往往面试者聊自己技术达到的程度都有水分,只有通过
真实经历的问题 + 解决问题的思路
才能切实反映你的真实程度。
一个人克服困难的能力,包括发现问题、分析问题、解决问题、总结问题等;是通过相关书籍、搜索引擎查找相关资料?还是去相关论坛、身边人求助?以及解决问题后是否会复盘总结记录等等。。
这是道开放性问题,如果没有提前准备,就容易看出你的语言组织能力和真实经历。其实面试官并不想知道你遇到的困难,而是想知道你解决问题的思路是否正确、是否会有效沟通、是否会百度等。
我听过一些朋友回答有关JVM调优
、慢查询优化
、并发场景调优
、晦涩难懂的业务场景等;结合项目说一说都会有不错的效果,甚至面试官也会为你出个主意~~
比如我们《MySQL慢查询,一口从天而降的锅!》 一文中提到的,我对于慢查询的处理思路(仅供参考吧):
定位问题
;通过xxx-slow.log慢查询日志确定慢SQL;分析问题
;如何导致的慢SQL;查询条件问题导致索引失效全表扫描?新增返回字段导致无法使用覆盖索引?IO过大导致CPU过高?DML语句造成的锁冲突?解决问题
;修改SQL语句或索引结构,构造最优查询效率(通过Explain分析得到各子查询尽可能达到Using index
或Using index condition
)总结问题
;对问题进行记录并复盘,总结出有价值的经验教训,记录到个人笔记或分享到博客中。造福后辈的崽子们。
课间休息,又来秀一下来自咱们群里同学的搬砖工地,坐标:西安。
作者:小梅同学
面试题2:项目开发具体流程是怎么样的
如果你真正经历过一个完整的项目周期
,完整的项目流程你一定是知道的,因为那正是让你加班加点的噩梦,噩梦怎么会忘记呢?是吧。好几个同学问过我这个问题了,今天写出来,不了解的评论区见
,别不好意思。
简单列举一下对我们开发人员来说,都应该知道的正常项目的进度里程碑包括:
需求说明书
(用户提供)、需求分析
(功能、性能)、概要设计
(业务流程、架构图、数据流、模块设计、数据表结构设计等)、详细设计
(模块划分、接口设计、技术细化)、测试方案
(如何测试、如何找茬?)、测试报告
(找茬结果、退回次数、上线情况)、系统安装说明
(产品化安装?docker部署?)、用户使用说明
、系统维护说明
等等。每一步都令我回味无穷啊,西内!
下面我在网上找到一篇相对详细的介绍分享给大家,偷个懒嘛,但有问题可以在评论区找我,哈哥摸鱼时候回复你。
软件开发流程,是指软件开发、设计的一般性过程,包括软件总体结构、模块构成、功能的设计,以及程序的编写、调试、程序联调、测试等等过程。
软件开发必须要遵从一定的流程、技术开发规范,软件开发团队中的每个成员都遵照统一的规范部署去设计、开发、测试、沟通
,才能提高开发的效率,提高项目开发的质量。软件开发流程一般有以下八个阶段:
1、项目开发目的分析与确定
软件开发流程的这一阶段,主要是在在软件开发商将开发项目确定下来之后,需要与需求方进行讨论,确定需求方对于软件开发的需要实现目标及其具体需要的功能等等,并确定是否可达成。
2、需求分析
这是软件开发流程的第二个阶段,也是为软件开发的正常进行确定具体思路的阶段。在确定软件开发可进行后,必须要对客户需要实现的软件功能需求进行具体详细的分析。同时应当考虑在开发过程中可能出现的变化情况,制定需求变更计划随时应对特殊情况的发生,保证软件开发流程的顺畅进行。
3、设计
软件设计要根据上一阶段对软件功能需求分析的结果,来设计软件系统的框架结构、功能模块和数据库等等。分为概要设计和详细设计两个部分。
4、编程
软件开发流程中每上一个阶段都是下一个阶段的实施进行的基础。编程也是根据对软件设计,将软件设计的各部分需求通计算机程序代码来实现运行,编程有统一、规范的程序编写规则,保证软件程序的易懂性、易维护性。
5、软件测试
在根据设计将客户软件需用编程代码来实现之后,也就是软件程序完成之后,需要对编写的程序,形成整体构架、功能进行单元、组装、系统三阶段的测试,以测试程序编写的正确性,以及对客户需求功能满足的充分性,以此来确定软件是否达到开发要求,同时也是一个发现问题、纠正问题的过程。
6、软件交付
软件开发流程通过以上核心环节完成了软件开发,接下来就是在软件开发达到客户需求之后,开发者将软件系统交予客户,并将软件安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等产物交付给客户,同时指导客户进行软件安装、以及安装技巧,提醒客户注意软件运行状况、环境、服务器及相关中间件的检测与注意事项,知道客户软件的实际操作方法、使用流程等等问题,实现合同规定任务。
7、验收
用户在接收开发商交付的软件开发结果,并进行实际操作、测试运行,实现满意结果之后,对开发出来的软件进行验收。
8、维护
定制开发的软件通常都需要提供售后服务,定期对软件进行维护,或者根据用户出现的新需求,进行应用软件程序的修改,使之不断满足客户实际需求。
课间休息,又来秀一下来自咱们群里同学的搬砖工地,坐标:???。
作者:水上风车
面试题3:秒杀系统怎么设计?
这是个很能聊的问题,也是加分项,无论你做没做过,没吃过猪肉也得知道猪是怎么跑的。
但是今天有点晚,后半夜卷不动了,我准备单独放到Day49里,等着狗哥吧。
每日小结
今天我们复习了面试中常问的两个老油条问题,你做到心中有数了么?对了,如果你的朋友也在准备面试,请将这个系列扔给他,如果他认真对待,肯定会感谢你的!!
好了,今天就到这里,学废了的同学,记得在评论区留言:打卡。
,给同学们以激励。
以上是关于Java岗大厂面试百日冲刺Day49— 实战那些事儿5 (日积月累,每日三题)的主要内容,如果未能解决你的问题,请参考以下文章
Java岗大厂面试百日冲刺Day45— 实战那些事儿 (日积月累,每日三题)
Java岗大厂面试百日冲刺Day42— 实战那些事儿3 (日积月累,每日三题)
Java岗大厂面试百日冲刺Day48— 实战那些事儿5 (日积月累,每日三题)
Java岗大厂面试百日冲刺 - 日积月累,每日三题Day36—— 实战那些事儿1