首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
人生需要_passion
门头沟学院 Java
发布于湖北
关注
已关注
取消关注
@10年javacoder:
新国都 Java面经 附参考答案
一位朋友去 新国都 的面经, 面经原贴地址:https://www.nowcoder.com/discuss/1075046我给大家整理了一份参考答案案。面试问题1.自我介绍2.熟悉 Java中有哪些 集合?3.ArrayList和LinkedList区别 4.说说JVM内存区域 5.那你说一下对象从创建到销毁过程 6.什么时候引起full gc,有什么危害 7.SQL优化手段。你知道哪些?8.事物的四大特性 9.MySQL如何保证事物d的原子性 10.分布式事务11.@Transactional 如何指定隔离级别12.Spring中IOC和AOP的理解13.如何进行依赖注入,byName和byType区别14.说一个自己熟悉的项目,讲讲收获(实习或简历上的项目)15.手写单例模式 16.反问参考答案这里先说清楚,参考答案哈,不可能每个点都讲的很清楚,毕竟,面试很多时候是看你是否回答到点上。1、自我介绍大众化的回答:面试官你好,我叫张三,河南人,毕业于XX大学,从XX年毕业后就一直从事java开发,差不多3年了吧。来贵公司面试,寻求一份java开发工作。自我介绍要说几个点:你是谁,你的优点是什么?这么多年你干了啥?在学校获得过什么奖?对哪些技术有深入研究?是否有高并发系统的设计?是否参与过什么大型项目?总之,把你有的家底都亮出来,让人家知道你哪方面相对比较强。2、熟悉 Java中有哪些 集合?Java的集合类型主要有3种:set(集)、list(列表)和map(映射)。List(有序、可重复):List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。常用实现类:ArrayList、LinkedList。Set(无序、不能重复):Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。常用实现类:HashSet。Map(键值对、键唯一、值不唯一):Map集合中存储的是键值对,键不能重复,值可以重复。根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。常用实现类:HshMap、Hashtable、ConcurrentHashMap。面试官可能会深入的对某个集合框架实现类进行深入的追问,这是后话哈,能回答上面基本上可以了。3、ArrayList和LinkedList有什么区别第一点:他们的底层数据结构不同,ArrayList底层是基于数组实现的,LinkedList底层是基于单链表实现的。第二点:由于底层数据结构不同,他们所适用的场景也不同,ArrayList更适合随机查找,LinkedList更适合删除和添加,查询、添加、删除的时间复杂度不同。第三点:ArrayList和LinkedList都实现了List接口,但是LinkedList还额外实现了Deque接口,所以, LinkedList还可以当做队列来使。第四点:时间复杂度,ArrayList:查询O(1),增删可能涉及数组扩容和[拷贝] (不是100%) 。LinkedList:查询O(N),增删O(1),但增删要先找到元素位置 。4、说说JVM内存区域JVM内存区域也通常称之为运行时数据区:程序计数器、虚拟机栈、本地方法栈、方法区、堆。其中,方法区和堆是线程共享的。而程序计数器、java虚拟机栈和本地方法栈是线程私有。程序计数器:字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制。在多线程的情况下,程序计数器用于记录当前线程执行的位置。不会出现OOM。虚拟机栈:每个线程都有自己的虚拟机栈,虚拟机栈的生命周期和线程一致。每次方法的调用,产生一个栈帧并入栈,方法调用完毕该栈帧就出栈。栈帧里包含局部变量表、操作数栈、动态链接和方法返回地址。可能会出现栈溢出,也可能会出现OOM。本地方法栈:类似虚拟机栈,不过对应的是虚拟机使用到的本地native方法。 堆:基本上所有对象都在堆中创建,堆又分为新生代和老年代,新生代又分为Eden区、survivor0,survivor1 (有时也叫做from区、to区) ,Eden:survivor0:survivor1=8:1:1(默认)。可能会出现OOM。大部分对象都是在Eden区创建和灭亡,但如果对象太大了,可能会直接在老年代里创建。Eden区创建,如果没背回收,就到survivor0,如果又没被回收,就到survivor1,survivor0和survivor1相互进行拷贝,到达一定程度就会到老年代。JDK1.7 及其之前堆内存被分为: 新生代+老年代+永久代。JDK1.8及其之后堆内存逻辑上分为三部分:新生区 +老年代 + 元空间。方法区:用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 方法区是一种规范,JDK7之前使用永久代实现,JD8及以后,采用元空间实现。JDK1.7之前运行时常量池逻辑包含让字符串常量池存放在方法区发, 此时hotspot虚拟机对方法区的实现为永久代。JDK1.7把 字符串常量池、静态变量拿出来放在了堆中,但是其他的仍在方法区(永久代)。JDK1.8 hotspot移除了永久代,使用元空间(Metaspace)取而代之,这时候字符串常量池、静态变量还在堆,运⾏时常量池还在⽅法区。5、那你说一下对象从创建到销毁过程比如下面这段代码:Student stu = new Student(“田哥”); stu.add(); stu=null; 用户创建了一个Student对象,运行时JVM首先会去方法区寻找该对象的类型信息,没有则使用类加载器classloader将Student.class字节码文件加载至内存中的方法区,并将Student类的类型信息存放至方法区。接着JVM在堆中为新的Student实例分配内存空间,这个实例持有着指向方法区的Student类型信息的引用,引用指的是类型信息在方法区中的内存地址。在此运行的JVM进程中,会首先起一个线程跑该用户程序,而创建线程的同时也创建了一个虚拟机栈,虚拟机栈用来跟踪线程运行中的一系列方法调用的过程,每调用一个方法就会创建并往栈中压入一个栈帧,栈帧用来存储方法的参数,局部变量和运算过程的临时数据。上面程序中的stu是对Student的引用,就存放于栈中,并持有指向堆中Student实例的内存地址。JVM根据stu引用持有的堆中对象的内存地址,定位到堆中的Student实例,由于堆中实例持有指向方法区的Student类型信息的引用,从而获得add()方法的字节码信息,接着执行add()方法包含的指令。将stu指向nullJVM GC 6、什么时候引起Full GC,有什么危害GC:garbage collection ,在通常意义上大家所说的Full GC为一次特殊GC行为的描述,这次GC会回收整个堆的内存,包含老年代,新生代,metaspace等 。Full GC的全过程中所有用户线程都是处于暂停的状态 ,也就是所谓的STW(stop the world )。7、SQL 优化手段,你知道哪些?1、开启查询缓存,优化查询2、explain你的select查询,这可以帮你分析你的查询语句或是表结构的性能瓶颈。EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序的3、当只要一行数据时使用limit 1,MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据4、为搜索字段建索引5、使用ENUM而不是VARCHAR,如果你有一个字段,比如“性别”,“国家”,“民族”,“状态”或“部门”,你知道这些字段的取值是有限而且固定的,那么,你应该使用 ENUM 而不是VARCHAR。6、Prepared StatementsPrepared Statements很像存储过程,是一种运行在后台的SQL语句集合,我们可以从使用 prepared statements 获得很多好处,无论是性能问题还是安全问题。Prepared Statements 可以检查一些你绑定好的变量,这样可以保护你的程序不会受到“SQL注入式”攻击7、垂直分表8、选择正确的存储引擎说个三五种基本上过关,越多越好。8、事物的四大特性传说中的ACID1、原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。2、一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。3、隔离性(Isolation)隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。4、持久性(Durability)持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。例如我们在使用JDBC操作数据库时,在提交事务方法后,提示用户事务操作完成,当我们程序执行完成直到看到提示后,就可以认定事务以及正确提交,即使这时候数据库出现了问题,也必须要将我们的事务完全执行完成,否则就会造成我们看到提示事务处理完毕,但是数据库因为故障而没有执行事务的重大错误。9、事务如何保证原子性MySQL原子性的保证是利用了undo log。undo log名为回滚日志,是实现原子性的关键,当事务回滚时可以撤销全部已经成功执行的sql语句,他须要记录你要回滚的相应日志信息。undo log记录了这些回滚须要的信息,当事务执行失败或调用了rollback,致使事务须要回滚,即可以利用undo log中的信息将数据回滚到修改以前的样子。 10、分布式事务当我们在跨多个服务,操作多个数据库时。就会涉及分布式事务,需要操作的资源位于多个资源服务器上,而应用需要保证对于多个资源服务器的数据的操作,要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同资源服务器的数据一致性。分布式事务解决方案几乎都是柔性事务,常见的有2PC/3PC、TCC、MQ最终一致性解决方案,至于工作中用哪种方案,需要根据业务场景选取,2PC/3PC、TCC数据强一致性高,而MQ是最终数据一致。@Transactional 如何指定隔离级别在使用时,@Transactional(isolation= Isolation.DEFAULT)中的isolation就是我们的隔离级别,对应有一个枚举Isolation,这个枚举里定了四种隔离级别:DEFAULT(对应数据库默认隔离级别)、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE11、Spring中IOC和AOP的理解Spring IOC1.IOC 控制反转,是指创建对象的控制权转移,以前创建对象的主动权和时机是由自己把控的,而现在这种权力转移到spring容器中,并由容器根据配置文件去创建实例和管理各个实例之间的依赖关系,对象与对象之间松散耦合,也利于功能的复用。DI依赖注入,和控制反转是同一个概念的不同角度的描述,即应用程序在运行时依赖IOC容器来动态注入对象需要的外部资源2.最直观的表达就是,IOC让对象的创建不用去new了,可以由spring自动生产,使用java的反射机制,根据配置文件在运行时动态的去创建对象以及管理对象,并调用对象的方法3.Spring 的IOC有三种注入:setter方法注入,构造器注入,接口注入Spring AOPOOP面向对象,允许开发者定义纵向关系,但并适用于定义横向的关系,导致了大量代码的重复,而不利于各个模块的重用。AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面(asoect)”,减少系统中的重复代码,降低了模块间的耦合度,同时提高系统的可维护性。可用于权限认证、日志、事务处理等。Spring AOP中的动态代理主要有俩种方式,JDK动态代理和CGLIB动态代理 12、如何进行依赖注入,byName和byType区别 byName就是通过Bean的属性名称(id或name)自动装配。当一个bean节点带有 autowire byName的属性时,需要注意下面三点:(1)将查找其类中所有的set方法名,例如setCat,获得将set去掉并且首字母小写的字符串,即cat。(2)去spring容器中寻找是否有此字符串名称id的对象。(3)如果有,就取出注入;如果没有,就报空指针异常。byType就是通过Bean的Class类型来自动装配。使用autowire byType首先需要保证:同一类型的对象,在spring容器中唯一。如果不唯一,会报不唯一的异常。 14、说一个自己熟悉的项目,讲讲收获(实习或简历上的项目)这个肯定要说自己最熟悉的项目咯,先说业务,如果是负责人,那就要项目核心业务给说清楚,如果是负责部分,那就把自己负责的那部分能说清楚。然后说项目技术栈,最后再说项目并发量如何?数据量如何?解决过什么问题?15、手写单例模式这个得需要自己事先准备过,可以写双重检查模式,也可以写枚举式。自己看着办。可以参考我之前写的一篇文章。16、反问面试最后一个环节就是:你还有什么想我的吗?有时候是客气时这么反问,有时候又是真的反问,所以,此时需要谨慎提问。别问一些无聊的话题,你们公司什么会调薪?你们加班多吗?但是你很牛,到也不怕,一般人还是别问哈。 都看完了,点个关注,点个赞呗!
点赞 18
评论 2
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 08:48
门头沟学院 Java
Agent别被挂羊头卖狗肉的岗位骗了
家人们谁懂啊!刷到这个话题我真的要吐槽了。今年春招,我身边至少10个同学,想冲Agent赛道,结果瞎投岗位,不是被挂羊头卖狗肉的岗位骗了,就是投了根本不匹配自己的岗位,浪费了大把时间,最后0offer,还吐槽Agent赛道卷、没机会。真的别再瞎投了!Agent赛道早就不是什么新鲜东西了,岗位细分得明明白白,哪些是真风口、有发展、能学到东西,哪些是坑、纯打杂、没前途,早就清清楚楚。今天我就把这些坑全扒出来,再告诉大家哪些岗位真正值得冲,别再被忽悠了!先盘点Agent赛道最坑的3个岗位,投了就是浪费时间这些岗位,名字里都带着“Agent”,听起来高大上,实则纯纯打杂、没发展、学不到任何东西,应届生...
想做Agent可以做哪些...
点赞
评论
收藏
分享
05-02 17:06
门头沟学院 golang
面试官对ai的看法到底是什么样的?真的能取代程序员吗?
最近面了一家公司,技术面很顺利地通过了,并且面试官表示基础很好,第二天约了负责人二面。二面问了很多开放性的问题,比如对ai的看法,对于后端开发比较重要的硬件,学校的课程,毕业论文,简历项目的意义等等。可能是我答得确实不太好,中间面试官一直在笑眯眯的否定我的答案,特别是对ai的看法。我觉得ai是辅助,是提效的工具,面试官觉得ai是导师,是使用者限制了ai的发挥,对于一些东西,我明确表示了使用ai做出来的效果不好,他觉得是我需求描述的不清晰。这种是压力面吗?还是单纯的和负责人理念不合焦虑地等结果最近面的有点反胃了,不想再面了,至今0offer
面试官最爱问的 AI 问...
点赞
评论
收藏
分享
03-30 18:56
平顶山学院 Java
28届找日常实习简历拷打
双非本,28届,目前八股文情况:Java基础、集合、MySQL、JVM 很熟Spring、Redis 半熟计算机基础、并发、微服务和队列、设计模式 还没背立扣hot100刷过一遍了,但是忘得差不多了。简历包装了一下黑马的外卖和点评,这个情况能找到日常实习嘛,每天要投多少份。
你的简历改到第几版了
点赞
评论
收藏
分享
04-29 10:07
电子科技大学 Java
招银网络oc
已经签了其他,释放hc了
牛客48784610...:
深圳的变成录用进行中,这个是稳了吗,还没有收到邮件
点赞
评论
收藏
分享
05-02 12:19
武汉商学院 Java
简历求拷打
学院本还是做不到吗,有一段实习,现在boss海投,一个技术岗面试都没有
简历上的经历如何包装
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
毕业了,有些话只能藏在心里了
1.9W
2
...
毕业啦!我们要一起去广州打拼啦!
1.9W
3
...
2026春招到底卷成什么样了?填问卷说出真相,最高领200元现金红包
1.5W
4
...
字节 中国交易与广告 后端一面
1.2W
5
...
211本,130投0面,agent应用开发,简历求助!
7932
6
...
从阿里被裁到快手升P6,我花了四年
7648
7
...
华为暑期实习
7157
8
...
从腾讯到阿里感,谢一路走来的自己
6548
9
...
别人:阿里 字节 腾讯
6520
10
...
在携程的一天
6384
创作者周榜
更多
正在热议
更多
#
这个offer值得去吗?
#
31183次浏览
228人参与
#
校招薪资来揭秘
#
960366次浏览
4061人参与
#
联宝杯大学生创新大赛,你的技术值得产业级答案
#
50677次浏览
781人参与
#
如果春招能重来,我会___
#
29137次浏览
290人参与
#
24秋招避雷总结
#
1019814次浏览
7098人参与
#
你会因为行情,降低找工作标准吗?
#
44800次浏览
328人参与
#
在爱玛,骑向未来
#
20138次浏览
394人参与
#
机械人还在等华为开奖吗?
#
339150次浏览
1652人参与
#
米哈游求职进展汇总
#
688528次浏览
3348人参与
#
华为池子有多大
#
177971次浏览
931人参与
#
26届春招投递记录
#
8614次浏览
71人参与
#
25届网易互娱暑实进度
#
109056次浏览
802人参与
#
通信/硬件求职避坑tips
#
171972次浏览
1170人参与
#
记录我的毕业季
#
4444次浏览
116人参与
#
机械人,你的秋招第一份简历被谁挂了
#
268708次浏览
2450人参与
#
远程面试的尴尬瞬间
#
363765次浏览
2062人参与
#
大学最后一个寒假,我想……
#
103270次浏览
846人参与
#
机械求职避坑tips
#
103648次浏览
589人参与
#
你认为小厂实习有用吗?
#
145004次浏览
762人参与
#
运营商笔面经互助
#
219568次浏览
1833人参与
#
美团秋招笔试
#
216287次浏览
1191人参与
#
网易求职进展汇总
#
213092次浏览
1523人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务