Java大厂面试百日冲刺【Day48】— 实战那些事儿5 (日积月累,每日三题)

网友投稿 615 2022-05-29

大家好,我是陈哈哈,北漂五年。相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍热门面试题及恰如其分的解答。

Java岗大厂面试百日冲刺【Day48】— 实战那些事儿5 (日积月累,每日三题)

一路走来,随着问题加深,发现不会的也愈来愈多。但底气着实足了不少,相信不少朋友和我一样,日积月累才是最有效的学习方式!想起高三时一个同学的座右铭:只有沉下去,才能浮上来。共勉(juan)。

车票

面试题1:谈谈你项目中遇到的最大困难或挑战是什么,你是如何解决的?

面试题2:项目开发具体流程是怎么样的

面试题3:秒杀系统怎么设计?

每日小结

本栏目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 SQL

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux 内核和 Windows 内核有什么区别?
下一篇:再也不怕,缓存雪崩、缓存击穿、缓存穿透
相关文章