产品展示

Products Classification

看完这份面经,你也能拿到京东Offer!

  • 产品时间:2021-09-25 01:08
  • 价       格:

简要描述:这是一篇7000字的长文,作者是一名211小硕,拿到了京东的研发岗Offer,总结了自己到场京东校招并拿到offer的面试题及谜底,另有学习方法,我只做了简朴的花样修改。对于一个校招生来说,能把JVM、网络知识、JDK源码等相识的这么全面,他不进京东,谁进京东。做到他这样,你,也可以。一面面试时间较长,回覆速度也较快,所有问题都举行了完整的回覆。 形式为电话面试,都是基础,难度一般,没关系张,回覆知识点即可。...

详细介绍
本文摘要:这是一篇7000字的长文,作者是一名211小硕,拿到了京东的研发岗Offer,总结了自己到场京东校招并拿到offer的面试题及谜底,另有学习方法,我只做了简朴的花样修改。对于一个校招生来说,能把JVM、网络知识、JDK源码等相识的这么全面,他不进京东,谁进京东。做到他这样,你,也可以。一面面试时间较长,回覆速度也较快,所有问题都举行了完整的回覆。 形式为电话面试,都是基础,难度一般,没关系张,回覆知识点即可。

鸭脖

这是一篇7000字的长文,作者是一名211小硕,拿到了京东的研发岗Offer,总结了自己到场京东校招并拿到offer的面试题及谜底,另有学习方法,我只做了简朴的花样修改。对于一个校招生来说,能把JVM、网络知识、JDK源码等相识的这么全面,他不进京东,谁进京东。做到他这样,你,也可以。一面面试时间较长,回覆速度也较快,所有问题都举行了完整的回覆。

形式为电话面试,都是基础,难度一般,没关系张,回覆知识点即可。内容主要包罗jvm相关,网络知识(TCP/IP,DNS),JDK源码(HashMap, ArrayList, HashTable等)JVM部门这部门主要考的是知识点的串联能力,面试官提出一个问题时,要把该问题相关的知识点都枚举出来(在说之前可以询问面试官是否需要详细讲述该知识点)。参考书籍:深入明白Java虚拟机-周志明 神书!神书!神书!建议多刷几遍,书中的所有知识点可以通过JAVA运行时区域和JAVA的内存模型与线程两个大模块枚举完全。

常考内容有:GC,JAVA线程实现方式,volatile底层原理,线程宁静,锁与CAS等1. 讲下JAVA的运行时区域回覆:运行时数据区整体分为两类 线程私有和线程共享。线程私有的包罗:法式计数器若正在执行的是java方法,则计数器记载的是正在执行的字节码指令的地址若正在执行的是native方法,则计数器为空该区域是唯一一个不会导致outofmemoryError的区域虚拟机栈形貌的是Java方法执行的内存模型:每个方法都市建立一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息局部变量表存放了编译期可知的基本数据类型,工具引用,和returnAddress类型(指向一条字节码指令地址),局部变量表的内存空间在编译器确定,在运行期稳定可导致两种异常:线程请求的栈深度大于虚拟机允许的深度-StackOverflowError;虚拟机无法申请到足够的内存-OutOfMemoryError当地方法栈和虚拟机栈类似,但它是为Native方法服务的线程共享的包罗:堆java堆是被所有线程共享的内存区域,在虚拟机启动时建立,用来分配工具实例和数组堆是垃圾接纳器主要治理的区域,堆可分为新生代和暮年代从内存分配角度看,堆可划分出多个线程私有的分配缓冲区(TLAB)巨细可通过 -Xmx 和 -Xms 控制方法区用来存放虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等信息GC会接纳该区域的常量池和举行类型的卸载 *运行时常量池Class文件的常量池用于存放编译期生成的种种字面量和符号引用,这部门内容将在类加载后存放在运行时常量池中还把翻译出来的直接引用也放在运行时常量池中,运行时发生的常量也放在内里2. 简朴说下垃圾接纳机制大致思路: 要举行垃圾接纳,首先要判断一个工具是否在世,这就引出了两种方法…引用计数法和可达性分析法gc roots 类型引用类型两次标志历程垃圾接纳算法内存分配计谋触发垃圾接纳垃圾接纳器也会接纳方法区回覆:要举行垃圾接纳,首先要判断工具是否存活,引出了两个方法:引用计数法思想:给工具设置引用计数器,没引用该工具一次,计数器就+1,引用失效时,计数器就-1,当任意时候引用计数器的值都为0时,则该工具可被接纳Java不适用原因:无法解决工具相互循环引用的问题可达性分析法虚拟机栈(栈帧中的局部变量表)中引用的工具方法区中类静态属性引用的工具方法区中常量引用的工具当地方法栈中JNI(Native方法)引用的工具以GC Roots为起点,从这些起点开始向下搜索,经由的路径称为引用链。

若一个工具到GC Roots之间没有任何引用链,则该工具是不行达的。那么可作为GC Roots的工具有在可达性分析历程中,工具引用类型会对工具的生命周期发生影响,JAVA中有这几种类型的引用:强引用:只要该引用另有效,GC就不会接纳软引用:内存空间足够时不举行接纳,在内存溢出发生前举行接纳、用SoftReference类实现弱引用:弱引用关联的工具只能存活到下一次Gc收集、用WeakReference类实现虚引用:无法通过虚引用获得工具实例,也不会对工具的生存时间发生影响、唯一目的:当该工具被Gc收集时,收到一个系统通知。用PhantomReference类实现一个工具真正不行用,要履历两次标志历程:首先举行可达性分析,筛选出与GC Roots没用引用链的工具,举行第一次标志第一次标志后,再举行一次筛选,筛选条件是是否有须要执行finalize()方法。

若工具有没有重写finalize()方法,或者finalize()是否已被jvm挪用过,则没须要执行,GC会接纳该工具若有须要执行,则该工具会被放入F-Queue中,由jvm开启一个低优先级的线程去执行它(但纷歧定等候finalize执行完毕)。Finalize()是工具最后一次自救的时机,若工具在finalize()中重新加入到引用链中,则它会被移出要接纳的工具的荟萃。其他工具则会被第二次标志,举行接纳JAVA中的垃圾接纳算法有:标志-清除(Mark-Sweep)两个阶段:标志, 清除缺点:两个阶段的效率都不高;容易发生大量的内存碎片复制(Copying)把内存分成巨细相同的两块,当一块的内存用完了,就把可用工具复制到另一块上,将使用过的一块一次性清理掉缺点:浪费了一半内存标志-整理(Mark-Compact)标志后,让所有存活的工具移到一端,然后直接清理掉端界限以外的内存分代收集把堆分为新生代和暮年代新生代使用复制算法将新生代内存分为一块大的Eden区和两块小的Survivor;每次使用Eden和一个Survivor,接纳时将Eden和Survivor存活的工具复制到另一个Survivor(HotSpot的比例Eden:Survivor = 8:1)暮年代使用标志-清理或者标志-整理触发GC又涉及到了内存分配规则: (工具主要分配在Eden,若启动了当地线程分配缓冲,将优先在TLAB上分配)工具优先在Eden分配当Eden区没有足够的空间时就会提倡一次Minor GC大工具直接进入暮年代典型的大工具是很长的字符串和数组恒久存活的工具进入暮年代每个工具有年事计数器,每经由一次GC,计数器值加一,当到达一定水平时(默认15),就会进入暮年代年事的阈值可通过参数 -XX:MaxTenuringThreshold设置工具年事的判断Survivor空间中相同年事所有工具巨细的总和大于Survivor空间的一半,年事大于即是该年事的工具就可直接进入暮年代,无须等到MaxTenuringThreshold要求的年事空间分配担保发生Minor GC前,jvm会检查暮年代最大可用的一连空间是否大于新生代所有工具总空间,若大于,则Minor GC是宁静的若不大于,jvm会检察HandlePromotionFailure是否允许担保失败,若不允许,则改为一次Full GC若允许担保失败,则检查暮年代最大可用的一连空间是否大于历次提升到暮年代工具的平均巨细,若大于,则实验举行Minor GC;若小于,则要改为Full GC垃圾收集器:Serial(串行收集器)特性:单线程,stop the world,接纳复制算法应用场景:jvm在Client模式下默认的新生代收集器优点:简朴高效ParNew特点:是Serial的多线程版本,接纳复制算法应用场景:在Server模式下常用的新生代收集器,可与CMS配合事情Parallel Scavenge特点:并行的多线程收集器,接纳复制算法,吞吐量优先,有自适应调治计谋应用场景:需要吞吐量大的时候SerialOld特点:Serial的暮年代版本,单线程,使用标志-整理算法Parallel OldParallel Scavenge的暮年代版本,多线程,标志-整理算法CMS对CPU资源敏感无法处置惩罚浮动垃圾(并发清除 时,用户线程仍在运行,此时发生的垃圾为浮动垃圾)发生大量的空间碎片初始标志:stop the world 标志GC Roots能直接关联到的工具并发标志:举行GC Roots Tracing重新标志:stop the world;修正并发标志期间因用户法式继续运作而导致标志发生变更的 那一部门工具的标志记载并发清除:清除工具特点:以最短接纳停马上间为目的,使用标志-清除算法历程:优点:并发收集,低停顿缺点:G1初始标志:stop the world 标志GC Roots能直接关联到的工具并发标志:可达性分析最终标志:修正在并发标志期间因用户法式继续运作而导致标志发生变更的那一部门标志记载筛选接纳:筛选接纳阶段首先对各个Region的接纳价值和成本举行排序,凭据用户所期望的GC停马上间来制定接纳计划并行与并发分代收集空间整合:从整体看是基于“标志-整理”的,从局部(两个region之间)看是基于“复制”的。

可预测的停顿:使用者可明确指定在一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得凌驾N毫秒。特点:面向服务端应用,将整个堆划分为巨细相同的region。执行历程:GC自适应调治计谋 Parallel Scavenge收集器有一个参数-XX:+UseAdaptiveSizePolicy。

当这个参数打开之后,就不需要手工指定新生代的巨细、Eden与Survivor区的比例、提升暮年代工具年事等细节参数了,虚拟时机凭据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停马上间或者最大的吞吐量,这种调治方式称为GC自适应的调治计谋(GC Ergonomics)。(垃圾接纳器部门重点讲CMS和G1)最后提一下也会接纳方法区:永久代中主要接纳两部门内容:废弃常量和无用的类废弃常量接纳和工具的接纳类似无用的类需满足3个条件该类的所有实例工具已被接纳加载该类的ClassLoader已被接纳该类的Class工具没有在任何地方被引用,无法在任何地方通过反射会见该类的方法上面的知识点在你多刷几遍书,脑中形成相应的知识网后能很全面的说出来。网络部门网络知识在面试中很是重要,尤其是TCP,DNS,HTTP等知识点。

该部门我的参考书籍是:图解HTTP,图解TCP/IP(对于开发来说,这两本书在网络方面的解说应该够用了),以及相关博客。回覆该类问题时,依然要从面试官提到的问题举行扩散,把相关的问题自己抛出来举行讲述(在抛出讲述时可以询问面试官是否需要举行详细的解说)1. 讲一下TCP三次握手对于该问题,可以直接关联TCP四次分手举行回覆。若是就地面试,可以在纸上画出客户端和服务端的TCP状态序列。

鸭脖官网

然后自己可以抛出相关的问题举行回覆,如:为什么不接纳两次握手,SYN半毗连攻击,TIMEWAIT数量太多怎么办,为什么毗连的时候是3次握手,关闭的时候是4次分手,为什么TIMEWAIT状态需要经由2MSL(最大报文段生存时间)才气回到CLOSE状态等等问题(这些问题在网上都有解说,这里就不赘述了)。2. TCP和UDP的区别(很常见的问题):TCP面向毗连(如打电话要先拨号建设毗连) UDP是无毗连的,即发送数据之前不需要建设毗连TCP提供可靠的服务。

也就是说,通过TCP毗连传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付TCP面向字节省,实际上是TCP把数据看成一连串无结构的字节省;UDP是面向报文的UDP没有拥塞控制,因此网络泛起拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频集会等)每一条TCP毗连只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信TCP首部开销20字节;UDP的首部开销小,只有8个字节TCP的逻辑通信信道是全双工的可靠信道,UDP则是不行靠信道3. 讲下ARP原理凭据目的Ip地址借助ARP请求和ARP响应来确定目的的MAC地址原理:通过广播发送ARP请求,Ip地址一致的主机吸收该请求,然后将自己的MAC地址加入的ARP响应包返回给源主机。要举行MAC地址缓存来制止占用网络流量每个主机都市在自己的ARP缓冲区建设一个ARP列表,表现Ip地址和MAC地址的对应关系当源主秘密发送数据时,首先检查ARP列表中是否有对应Ip地址的目的主机的MAC地址,若有,则直接发送,若无,则向本网段的所有主机发送ARP数据包,该数据包包罗的内容有:源Ip地址,源MAC地址,目的主机Ip地址当本网络的所有主机收到该ARP数据包时,首先检查书包中的Ip地址是否是自己的Ip地址,若不是则抛弃,若是,则首先从数据包中取出源主机的IP和MAC地址写入自己的ARP列表中,若已存在,则笼罩;然后将自己的MAC地址写入ARP响应包中,告诉源主机自己的MAC地址源主机收到ARP响应包后,将目的主机的IP和MAC地址写入ARP列表中。若源主机一直没有收到ARP响应,则ARP查询失败(广播发送ARP请求,单播发送ARP响应) 此时,自己可以加上ARP攻击及免费ARP相关知识点(可自行搜索)JDK源码部门这部门主要在于自己平时的积累,可以随着相关的博客看源码。

鸭脖官网

常考的内容有String,荟萃框架,foreach(Iterator及fail-fast机制)等内容。1. HashMap相识吗,说一下这里就不详细说了,大致思路是jdk7和jdk8的实现原理及区别(重点有实现的数据结构,存储单元从Entry到Node的转变,加载因子,什么时候扩容,jdk1.8扩容的详细实现方式等等),HashMap和HashTable的区别,HahsMap和HashSet的关系。要联合源码说。

ArrayList相识吗,说一下重点是底层实现方式,扩容机制,以及LinkedList的底层实现方式;它们之间的区别。要联合源码说二面面试时间不长,个体问题回覆的有些底虚。主要考察的是知识面的广度和对技术的热爱水平,以及对做过项目的熟悉水平。

还是那句话,坦诚地回覆问题,不会就是不会,如果冒充会可是被接下来地问题问倒的话,那就没戏了。实习时项目的相关问题每小我私家的项目都差别,只枚举几个问题项目是怎样预防sql注入的回覆:用的是mybatis,sql语句中用#{},#{}表现一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,jdbc有个预编译的历程可以有效预防sql注入,只管不用${},它是个拼接符,用来拼接sql字符串。项目中你做到的redis缓存相关的切面设置(简历中有写)切面分析:@Aspect切面: 查询前先查询redis,若查询不到,则查数据库,获得数据后存到redis中目的方法:查询数据库前置:查询之前先查redis后置:从数据库中查到的内容放到redis中切面中的通知定位围绕通知:@Around然后又问了aop的实现原理(jdk动态署理和cglib字节码增强,在回覆时要说出底层源码)喜欢什么技术答:漫衍式,实习时虽然自己做的是企业后台,并没有涉及到许多漫衍式的内容,可是会经常从同事那里相识一些漫衍式的技术感受很有趣都相识到了哪些漫衍式的技术答:举行反向署理和负载平衡的nginx,及实现高可用的keepalived+nginx;内存数据库redis及它的基本数据类型和持久化方式;用于做注册中心的zookeeper和服务治理的dubbo;防止用户重复登录的单点登录;漫衍式的文件存储系统fastdfs;页面静态化处置惩罚的freemarker;以及用于搜索的solr(这部门由于有些技术自己只是会用,不相识底层,所以说的吞吞吐吐,很没底气,其实没须要,大大方方说出来后再说明自己相识的水平即可)感受自己哪方面有欠缺答:spring源码不太相识,另外linux方面有些单薄,正在增补相关知识。(可以加上自己现在正在看哪些书)jdk9有哪些认识答:不太清楚,还没相识(心田状态:卧槽,jdk9什么时候出来的) (这个问题可以很好的相识到求职者对技术的热爱水平,平时可以多关注技术的生长偏向,版本迭代。

这方面可以通过关注一些优质的民众号:如Hollis)为什么想来互联网公司答:可能是第一份实习事情的影响吧, 面试官:另有呢? 我:我也说不清楚,就是想去互联网公司(说完之后就想宰了自己)HR面hr面重要的也是真诚,另有就是表达好自己想去该公司及对该公司的相识现在有几个offer答:1个,可是已经拒了为什么拒了答:因为它不是互联网公司你为什么想在互联网公司生长答:人为高是一方面,另外在互联网公司中一般可以更快接触到新的技术为什么想来京东答:因为京东是我关注良久的公司,从京东第一次做秋招视频直播就开始关注了。首先京东是一家互联网公司,其次京东近些年的生长有目共睹,而且京东正在向技术公司转型,相信自己可以学到许多工具。你有什么缺点答:压力大时喜欢通过吃工具来排遣压力,所以又要减肥什么的很贫苦另有呢答:喜欢熬夜另有呢答:emmmm,哎呀,想不起来了 (其实,关于优点和缺点的问题应该好好总结一下,否则问的其时容易懵逼) 另有几个问题不太记得了,或许就是实习时自己意见和同事纷歧样时是怎么解决的。对于这种问题,最好举个实际的例子。

总结其实网上的大多数面经已经说的很清楚,一定要形成自己的知识树,如果仅仅想通过看面经来通过面试,会很难。自己平常一定要积累知识,把知识点分类举行记载,在面试历程中主动说出头试官所提问题的关联问题的解决方案能够加分,体现自己的知识串联能力。

现在许多朋侪们都在求职跳槽,为相识决宽大Java工程师们的燃眉之急,我特地为大家整理了一些Java相关的面试题以及一份面试突击文档,需要的可以后台私信“面试”获取。没有人会讨厌和拒绝认真准备面试的人,所以不要认为面试就是必须用一个“素颜”的你去“真诚”的面临。


本文关键词:鸭脖,看完,这份,面,经,你,也能,拿到,京东,Offer,这是

本文来源:鸭脖-www.chinanewsoft.com

 


产品咨询

留言框

  • 产品:

  • 留言内容:

  • 您的单位:

  • 您的姓名:

  • 联系电话:

  • 常用邮箱:

  • 详细地址:


推荐产品

Copyright © 2003-2021 www.chinanewsoft.com. 鸭脖科技 版权所有 备案号:ICP备17744996号-2

在线客服 联系方式 二维码

服务热线

0618-563835968

扫一扫,关注我们