随着互联网的发展,与互联网相关的相应职业也很受欢迎,其中最受欢迎的职业是程序员和工程师,在这部分人群中,学习java编程朋友占了很大一部分,下面整理了一些java后台笔试题,相信正在为准备java面试的朋友一定能用到以下内容。
1、java语言层次安全主要体现在哪里?
答:Java取消了强大但危险的指针,而不是引用它们。由于指针可以移动,指针可以随意指向内存区域,无论该区域是否可用,因为原始内存地址可能存储重要数据或其他程序操作,使用指针也很容易数组越界。
垃圾回收机制:无需程序员直接控制内存回收,垃圾回收器在后台自动回收不再使用的内存。避免忘记及时回收程序,导致内存泄漏。避免错误地回收程序核心库中的内存,导致系统崩溃。
异常处理机制:Java异常机制主要依赖于try、catch、finally、throw、五个关键词throws。
强制类型转换:只有在满足强制转换规则的情况下才能成功强制转换。
2、Java三大版本各有哪些?
答:Java平台包括标准版(J2)SE)、企业版(J2EE)和微缩版(J2ME)三个版本:
(1)Standard Edition(标准版) J2SE,包括构成Java语言核心的类别。例如:数据库连接、界面定义、输入/输出、网络编程等。
(2)Enterprise Edition(企业版) J2EE,包括J2SE中的类别,也包括用于开发企业级应用的类别。例如,servlet、JSP、XML、事务控制。
(3)Micro Edition(微缩版) J2ME,消费电子产品的软件开发包括J2SE的一部分。例如:呼机、智能卡、手机、PDA、机顶盒。
他们的范围是:J2SE包含在J2EE中,J2ME包含J2SE的核心类别,但添加了一些新的专有应用程序,API的覆盖范围不同。
3、i++与++i的异同
答:共同点:共同点:(1)i++和++i都是变量自增1,相当于i=i+1;(2)如果i++,++i是单独的句子,两者没有区别;(3)i++和++i的使用只针对变量。 5++++5会报错,因为5不是变量。
不同点:如果i++,++i不是一个单独的句子,它们有区别++ :先操作后增加1。
4、Hashmap并发问题?
答:Hashmap线程不安全。当size超过一定尺寸需要扩展容量时,hashcode值将重新计算,在多线程的情况下可能会产生死循环。Hashtable和concurenthashmap可以使用。
5、Hashtable和Concurrenthashmap的区别?
答:当当Hashtable增加到一定数量时,性能会急剧下降,因为迭代时会长时间锁定,而ConcurentHashmap使用分割,无论数量如何,都只需要锁定map的一部分。
6、反射的原理和反射创建实例的三种方法是什么??
答:在java反射机制的实际运行中,任何类别都可以知道它的所有属性和方法,并调用它的任何属性和方法。三种方法:getClass()方法,调用类的静态属性class,Class.forName()。
7、java创建过程?
A:当虚拟机遇到一个时,当虚拟机遇到一个时new指令时,检查常量池中是否引用该对象所属类别的符号。如果没有,则抛出clasnotfoundexecption异常。如果是这样,检查符号所代表的类别是否已经被jvm加载。如果没有加载,则找到此类class文件并加载到方法区域。如果已经加载,根据方法区的信息,将一个内存空间分配给堆中的新对象。
8、如何判断哪些对象需要回收?
答:引用计数法:每个对象都有一个计数器。当引用该对象时,计数器添加1.不引用时减1,当该计数器为0时,该对象被视为无效对象。
可达性分析:所有和和gc roots(java虚拟机栈引用的对象、方法区静态属性和常用应用的对象、当地方法栈引用的对象)直接或间接关系的对象被认为是有效的对象和GC roots无关的对象被认为是无效的对象。
9、创建java实例的过程?
答:先父类后子类;父类静态;-子类静态-父类初始化块-父类结构方法-子类初始化块-子类结构方法。
10、synchronized和lock的区别?
答:当同步块完成或发生异常时,synchronized释放锁,lock必须在finally中释放锁,否则容易死锁;synchronized如果线程A得到锁,线程B线程等待,如果线程A堵塞,线程B一直在等待lock有多种方法可以获得锁,B不必等待试图获得锁;synchronized锁是不公平的,lock可以公平也可以不公平;synchronized适用于少量代码同步,lock适用于大量代码同步。
11、java基本数据类型类型转换规则是什么?
答:基本类型转换分为自动转换和强制转换。
自动转换规则:容量小的数据类型可以自动转换为容量大的数据类型,也可以自动转换为容量大的数据类型
低级自动向高级转换。这里的容量不是指字节数,而是指类型表达的范围。
12、Spring AOP和IOC的实现原理?
答:ioc是spring核心内容,控制反转,也被称为依赖注入,使对象的创建不需要new可以生成。事实上,它是通过反射机制动态创建和调用对象调用时的对象和方法;注入方法包括set注入、构造器注入和基于注释的注入。
aop也是spring的一个主要特征。aop通过动态代理实现切面编程,可用于某一类别的监督和管理,从而实现模块扩展的功能。
spring的目的是将对象之间的关系变成xml配置,从而实现对象之间的解耦。spring是一个容器,只有容器中的对象才能提供这些功能和服务。
13、Dubbo底层实现的原理和机制?
答:client调用远程接口生成唯一的id,包装调用信息(接口、方法、参数)、结果返回对象callback,将其包装成object,并将信息concurenthashmap中的put转移到专门的信息concurenthashmap中(id,object),然后将id和object包装成conrequest,使用IOSession.write(conRequest)异步发送请求,然后当前线程试图使用calback的get()方法获得返回值,使用synchronized在get方法内获得calback锁,如果没有结果,则调用calback的wait()方法,释放callback锁,使线程处于等待状态。服务端处理后,将结果返回客户端。客户端的socket专门监控消息的线程,接收消息,获取分析结果的id,从concurenthashmap中获取object中的callback,并将结果设置在callback中。用synchronized获取calback锁,在notifyall()唤醒当前等待的线程。
14、递归的定义、优缺点
答:递归算法是一个直接或间接调用自己算法的过程。在计算机编写程序中,递归算法对解决一大类问题非常有效,往往使算法的描述简洁易懂。
递归算法解决问题的特点:(1)递归是在过程或函数中调用自己;(2)使用递归策略时,必须有明确的递归结束条件,称为递归出口;(3)递归算法通常简单,但运行效率低。因此,一般不提倡使用递归算法设计程序;(4)在递归调用过程中,系统为每层的返回点和局部量开辟了堆栈存储。递归次数过多容易造成栈溢出等。因此,一般不提倡使用递归算法设计程序。
15、请写下插入排序的代码
package com.bjsxt;
public class TestInsertSort {
public static void sort(int arr[]) {
int i, j;
for (i = 1; i < arr.length; i++) {
int temp = arr[i];
for (j = i; j > 0 && temp < arr[j - 1]; j--) {
arr[j] = arr[j - 1];
}
arr[j] = temp;
}
}
}
16、类与对象的关系?
答:类是对象的抽象,对象是类的具体例子。类是抽象的,不占用内存,但对象是具体的,占用存储空间。类是用来创建对象的蓝图,它是一个定义方法和变量的软件模板,包括特定类型的对象。
17、Znode节点有哪些类型?
答:(1)PERSISTENT 持久节点: 所谓持久节点,是指节点创建后一直存在,直到有删除操作主动删除节点。否则,创建该节点的客户端会话不会消失。
(2)PERSISTENT_SEQUENTIAL 持久顺序节点:该节点的基本特性与上述节点类型一致。额外的特点是,在ZK中,每个父节点将为他的第一个子节点维护一个时间顺序,并记录每个子节点创建的顺序。基于此功能,在创建子节点时,可以设置此属性,因此在创建节点的过程中,ZK将自动为给定节点名添加数字后缀作为新节点名。数字后缀的范围是整形手术的最大值。 在创建节点时,只需要输入节点 “/test_”,之后,zookeeper会自动给予”test_”后面补充数字。
(3)EPHEMERAL 临时节点:不同于持久节点,临时节点的生命周期和客户端将 单词绑定。换句话说,如果客户端会话失败,节点将自动删除。请注意,这里提到的是会话失败,而不是断开连接。此外,子节点不能在临时节点下创建。
18、Maven工程类型有哪些?
答:(1)POM工程:POM工程是一个逻辑工程,用于父级工程或聚合工程,用于控制jar包的版本;(2)JAR工程:将打包成jar作为jar包,即常见的本地工程 - Java Project;(3)WAR工程将包装成WAR,并在服务器上发布。如网站或服务。也就是常见的网络工程 - Dynamic Web Project。默认没有WEB-INF目录,web.IDE通常会显示工程错误,并提供完整的工程结构来解决xml配置文件。
19、一个中文汉字可以存储在char变量中吗?
答:(1)java使用unicode编码,两个字节(16位)表示一个字符, 汉字、数字、字母或其他语言都可以存储;(2)char java有两个字节,所以可以存储中文。
20、对比Java和JavaSciprt两者的区别?
答:JavaScript和Java是两家公司开发的两种不同的产品。Java 是原Sun 公司推出的面向对象的程序设计语言特别适合互联网应用程序开发;JavaScript是Netscape的产品,是一种基于对象和事件驱动的解释性语言,旨在扩展Netscape浏览器的功能,它的前身是LiveScript;而Java 前身是Oak语言。
对两种语言之间的异同进行以下比较:
(1)基于对象和面向对象:Java是真正面向对象的语言,即使是开发简单的程序,也必须设计对象;JavaScript是一种脚本语言,可以用来制作与网络无关、与用户互动的复杂软件。它是基于对象的(Object-Based)和事件驱动(Event-Driven)编程语言。因此,它本身为设计师提供了非常丰富的内部对象;
(2)解释和编译:Java 执行前必须编译源代码;JavaScript 它是一种由浏览器解释执行的解释性编程语言,其源代码不需要编译;
(3)强类型变量和弱类型变量:Java采用强类型变量检查,即编译前必须说明所有变量;JavaScript中的变量声明采用其弱类型。也就是说,变量在使用前不需要声明,但解释器在运行时检查其数据类型。
Java包含很多内容,本文整理了20个java背景笔试问题,虽然不多,但经常出现在java面试中,经常测试笔试问题,可以发挥填补空白的作用,所以我希望你能学习上述问题,为面试做好准备,以便顺利通过面试。