字节跳动Java后端面试真题,看完你学会了吗,「附面试福利」

本文分享了字节跳动Java后端面试的真题,涵盖Java平台理解、异常处理、集合框架等内容。讲解了Java的解释与编译执行模式,对比了Exception和Error,以及Hashtable、HashMap、TreeMap的区别。还讨论了ArrayList、Vector、LinkedList的性能特点,并提醒读者关注文末福利。
摘要由CSDN通过智能技术生成

 

前言;

之前有好多朋友给我留言说想去字节跳动,今天就给大家分享几道字节跳动的面试真题给大家,文末有福利哦。

 

 

一. 谈谈你对Java平台的理解? "Java 是解释执行",这句话正确么?

典型回答:

Java本身是一种面向对象的语言,最显著的特点有两个方面,一个是所谓的"书写一次,到处运行";能够非常容易地获得跨平台能力;另外就是垃圾收集器(GC),Java通 过垃圾收集器回收分配内存,大部分情况下,程序员不需要自己操心内存的分配和回收。我们日常接触到JRE或者JDK。JRE也就是Java运行环境,包含了JVM和Java类库,以及一些模块等。而JDK可以看作是JRE的一个超集,提供了更多的工具,比如编译器各种诊断工具。

"对于Java是解释执行"这句话,这个说法不准确。我们开发的Java的源代码,首先通过Javac编译成为字节码,然后在运行时通过Java虚拟机内嵌的解释器将字节码转换为最终的机器码。但是常见的JVM,比如我们大数据情况使用的0racleJDK提供的HostpotJVM,提供了JIT编译器,就是通常所说的动态编译器,JIT能够在运行时将热点代码(高频调用的方法和代码块)编译成机器码,这种情况下部分热点就属于编译执行,而不是解释执行。这样类似于缓存技术,运行时在遇到热点代码可以直接执行,而不是先解释在执行。

知识扩展:

在运行时 , JVM通过类加载器加载字节码,解释或者编译执行。就像我们前面提到的,主流的Java版本中,如JDK8实际是解释和编译混合的一种模式,即所谓的混合模式。JIT编译器分为多种模式(Server模式C1ient模式AOT模式)通常运行在Server模式的JVM,会进行上万次调用以收集足够的信息进行高效编译,client模式这个门限是1500次。

Oracle Hostpot JVM内置了两个不同的JIT compiler,C1对应 前面说的client模式,适用于对于启动速度敏感的应用,比如普通Java桌面应用;C2对应Server模式,它的优点是为长时间运行的服务器端应用设计的。

Java虚拟机启动时, 可以指定不同的参数对运行模式进行选择。比如,执行"-Xint",就是告诉JVM只进行解释执行,不对代码进行编译,这种模式抛弃了JIT可能带来的性能优势。毕竟解释器是逐条读入,逐条解释运行的。与其相对性的,还有一个"Xcomp"参数,这是告诉JVM关闭解释器,不要进行解释执行,或者叫做最大优化级别。那你可能会问这种模式是不是最高效啊?简单来说,还真未必。"-Xcomp" 会导致JVM启动变慢非常多..

除了日常最常见的Java使用模式,其实还有一种新的编译方式,即所谓的AOT,直接将字节码编译成机器码,这样就避免了JIT预热等各方面的开销,比如Oracle JDK 9就引入了实性

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值