熊大同学的面试回忆录(2.5年开发经验)

今天去看牙医,他问我年级轻轻牙齿怎么磨损这么严重?我说,没有点赞的这些年,我都是咬着牙过来的。

以下为读者面试后的分享,部分回答笔者做了一些补充整理,希望对你有帮助。(两年左右开发经验,不具有共性,仅供参考!)

PS:如果各位同学在面试后,也会做一些整理总结,也欢迎联系我,整理分享在公众号上,互帮互助,帮助找工作的同学拿下心仪公司的Offer!

1.自我介绍

各有不同,略。(话说回来,如果是不善言辞的同学,应该面试前给自我介绍打个底稿记一下,开局印象也重要,自我介绍都结结巴巴的,面试要凉一半!)

2.之前项目中使用过哪些框架,评价一下自己掌握的程度?

答:Spring,SpringMVC,SpringBoot,Mybatis,SpringCloud那一套,基本都使用过。

掌握程度的话,基本上在搭建及使用上没有问题,具备独立开发的能力,但是因为之前公司开发任务比较紧张,暂时对底层原理这些没有做太多的研究。

ps:如果你对Spring全家桶这套底层源码、实现原理等有较深的研究,感觉能经受得住提问,就不要这样自我评价了~

3.你们的微服务项目,服务注册、发现使用什么组件?

答:使用了Nacos。

接着问了为什么没有用Eureka,他们有什么区别吗?

答:Nacos可能更有先进性一些,自带实现配置中心,Eureka的话,需要整合SpringCloud Config,同时Nacos支持根据不同的业务、环境进行分组管理,所以在选型上有限考虑了Nacos。

PS:附Eureka和Nacos的功能对比图

熊大同学的面试回忆录(2.5年开发经验)

4.那你知道Nacos的实现原理吗?

没答出来。

回答了:平时业务开发比较多,比较熟悉使用,对底层原理没有做深入的了解。

ps:Nacos原理分析,可以看这里:

【282期】面试官:你能说说 Nacos 的实现原理吗?

5.你觉得SpringBoot和Spring的区别是什么?

答:SpringBoot开发中简化了很多XML的配置,引入自动配置的概念,做到零配置开箱即用。

还有就是内置了容器,不需要配置Tomcat,可以直接打包Jar运行。

接着问了SpringBoot的启动原理

答:通过 @SpringBootApplication注解启动初始化模块,加载基本的环境变量、资源、构造器等,配置信息等;根据文件中配置的 Jar 包去扫描并加载项目所依赖的 Jar 包; @SpringBootApplication注解包含 @ComponentScan注解,可以进行组件扫描,把扫描到的Bean注入到注入 Spring Context 中,完成SpringBoot的启动!

PS:这个问题回答的很虚,面试之前其实看过SpringBoot启动原理的文章,但是没有自己去提炼一下如何回答(没想到就问了,心里那个悔啊),不过面试官没有说什么,回答完后直接问了另一个问题。

6.Spring中用了哪些设计模式?

答:工厂模式、代理模式、单例模式。

我是个菜鸡,平时设计模式其实研究不多,偏重业务开发。答完后面试官追问还有呢?我回答暂时想不到了!!!

接着问,具体说说哪里用到了?

  • 工厂模式在 BeanFactory以及 ApplicationContext创建中都有用到;
  • 代理模式在Aop实现中用到了JDK的动态代理;
  • 单例模式在创建bean的时候,默认单例;

面试后的总结:设计模式上肯定失分了,其实也看过这类文章,还有收藏,只是没有深入去阅读,总结,导致面试回答时候,能想起一点,但是总是回答不全或者回答不到点子上,以后学习的习惯要改,不能草草看过就算,要么不看,看过就记录总结~~

7.熟悉Linux操作系统吗?

答:熟悉,项目部署一直使用linux,基本的项目部署之类没有问题。

接着问说说常用的Linux命令

  • vim 打开文件修改内容
  • find 搜索文件
  • mkdir 创建目录
  • rm 删除目录或文件
  • kill 杀掉进程
  • cp 拷贝

等等,说了不到十个左右被打断,问了:

  • 查看与某台机子的连接情况: ping ip
  • 重启网络: service network restart

让自己说了一通常用的命令之后,只问了这两个。

8.Redis熟悉吗?用得多吗?

答:项目中一直在用,还算熟悉。

说说Redis的常用命令吧

  • info:提供服务器的信息和统计;
  • shundown:将数据同步保存到磁盘,然后关闭服务;
  • get(key):返回数据库中名称为key的string的value;
  • setnx(key, value):添加string,名称为key,值为value;
  • lindex(key, index):返回名称为key的list中index位置的元素;

简单说了几个,接着问了 什么是缓存穿透、缓存雪崩、缓存击穿?

缓存穿透、缓存雪崩、缓存击穿的解决方法?

我感觉这个回答的还行,答案不罗列了,参考:

PS:主要是看过,也理解了这部分,其实这个在之前项目中还真没实际处理过~~~

9.Excel数据的导入导出处理过吗

答:处理过,使用了POI做Excel的导入导出。

接着问导出数据量很大,会有什么问题

答:会导致内存溢出。

你们怎么处理的?

(这个基本没答上来,依稀记得看过公众号相关文章,但是忘记的死死的,好想说我去找个文章,拷贝一下人家处理的代码,这样子解决。)

答:之前项目中,导出没有遇到数据量特别多的场景,没有这方面的处理经验。

10.有没有对项目做过优化,说说SQL方面你们一般会做哪些优化处理

答:

  • 使用连接(JOIN)来代替子查询;
  • 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引;
  • 用EXISTS替代IN、用NOT EXISTS替代NOT IN;
  • 避免在索引列上使用计算;
  • 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描;
  • 尽量避免3条以上的Join查询;

接着问,很多次说到索引,是不是添加的索引越多越好?

答:不是。

  • 表记录太少
  • 经常插入、删除、修改的表

补充:

  • 数据重复且分布平均的表字段,假如一个表有10万行记录,有一个字段A只有T和F两种值,且每个值的分布概率大约为50%,那么对这种表A字段建索引一般不会提高数据库的查询速度。
  • 经常和主字段一块查询但主字段索引值比较多的表字段

其他

问了一些简历上的项目问题,不具备共性,这里不分享了。

问了能手写红黑树吗?

答:数据结构那些不太熟,只会基本的排序那些,面试官一笑~

问了在之前项目中有没有踩过什么坑,怎么解决的?

最怕这类提问,想了一下说了事务注解失效的坑,导致生产数据出现问题,熬夜回退并作了数据矫正。

问了上家公司离职原因

回答不具有共性(本人是一线城市回二线),略。

问有什么想问的吗?

问了对我面试表现的评价。评价大意是项目实战经验不错,使用的技术方面都比较契合,项目上没有问题;然后Java基础方面不理想,知道使用但是对原理没有去做了解。

嗯,还算中肯~~

基本面试下来,回想起来的就这些问题了。但是提问顺序有出入,记性不好,只能回忆期这些了,希望对你有所帮助!

Original: https://www.cnblogs.com/javazhiyin/p/14822448.html
Author: Java知音号
Title: 熊大同学的面试回忆录(2.5年开发经验)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/539554/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 推荐一款国产网络管理工具-FinalShell

    FinalShell是一款免费的国产的集SSH工具、服务器管理、远程桌面加速的良心软件,同时支持Windows,macOS,Linux,它不单单是一个SSH工具,完整的说法应该叫一…

    Java 2023年6月5日
    0139
  • Java工具类之——Arrays

    Arrays 是JDK提供的操作数组的工具类,array类提供了动态创建和访问 Java 数组的方法。arrays此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允…

    Java 2023年6月8日
    095
  • java中的一维数组

    数组(array):是一种用于存储多个相同数据类型的存储模型(可以理解为容器) 数组定义和静态初始化 数组的两种定义格式: 格式1: 数据类型[] 变量名; 范例: int[] a…

    Java 2023年6月15日
    089
  • Java Bean 转 Map 的巨坑,注意了!!!

    作者:明明如月学长链接:https://juejin.cn/post/7118073840999071751 一、背景 有些业务场景下需要将 Java Bean 转成 Map 再使…

    Java 2023年5月29日
    0115
  • 黑马2022最新redis课程笔记知识点(面试用)持续更新

    redis入门 redis的常见五种数据类型 String类型 String类型,类似于java中的String类型,常见使用get,set方法。 String类型还可以存储jso…

    Java 2023年6月9日
    0104
  • JVM内存区域与内存溢出异常(1)

    运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据 区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的 启动…

    Java 2023年6月13日
    068
  • IDEA生成带参数和返回值注释

    步骤说明 打开IDEA进入点击左上角 – 文件 – 设置 – 编辑器 – 活动模板 新建活动模板 填写模板文本 编辑变量 添加变量表…

    Java 2023年6月15日
    0110
  • 外卖项目

    项目介绍: 本项目,瑞吉外卖是专门为餐饮企业,餐厅,饭店定制的一款软件产品,包括系统管理,后台和移动端应用两部分,其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的菜品,…

    Java 2023年6月6日
    092
  • JavaWeb重定向及实现

    JavaWeb重定向及实现 重定向,就是将浏览器发送过来的请求有一个server转由另一个server处理。有两种实现方式,一是服务器内部进行重定向。二是将另一个server的地址…

    Java 2023年6月8日
    0107
  • 数组(Java)

    数组的定义 数组是相同类型数据的有序集合 数组描述的是相同类型的若干数据,按照一定的先后次序排列组合而成 其中,每个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们 数…

    Java 2023年6月9日
    089
  • 【建议收藏】Redis超详细入门教程大杂烩

    👉写在前边 Redis入门的整合篇。本篇也算是把2021年redis留下来的坑填上去,重新整合了一翻,点击这里,回顾我的2020与2021~一名大二后台练习生 NoSQL NoSQ…

    Java 2023年6月5日
    099
  • Java设计模式之(十四)——策略模式

    Define a family of algorithms, encapsulate each one, and make them interchangeable. Strate…

    Java 2023年5月29日
    052
  • java 查看SOAP请求报文

    1 log.info("ESB 请求URL = " + cachedEndpoint.toString());//打印SOAP请求报文 add by LinJC…

    Java 2023年5月29日
    056
  • Linux命令(一)

    文件列表 ls #表示查看当前目录下的文件 ls -a #表示查看当前目录下的所有文件(包含隐藏文件) ls -l #表示查看当前目录下的详细信息 ll #表示查看当前目录下的详细…

    Java 2023年6月6日
    079
  • Java 顺序查找 二分查找

    查找 在 Java 中我们常用的查找有两种: 顺序查找 即:有一个数组/数列 {“a”, “b”, “c”, “d”} 我们从键盘中输入任意一个 与数组类型相同的值,然后循环遍历这…

    Java 2023年6月5日
    0202
  • java环境变量配置

    环境变量的配置: 下载好的JDK是一个可执行安装程序,双击安装。将安装路径改为:D:\Program Files\Java\jdk1.6.0_05(当然其他路径也可以)。 JDK安…

    Java 2023年6月8日
    072
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球