动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Java后台笔试题(附答案)

09-07 17:28 287浏览
举报 T字号
  • 大字
  • 中字
  • 小字

随着互联网的发展,相应的与互联网有关的职业岗位也流行起来,其中最为火爆的职业就是程序员与工程师了,在这部分人群中,学习java编程的朋友又占据了很大一部分,所以下面整理了一些java后台笔试题,相信正在为java面试做准备的朋友们一定可以用的到下面的内容。

1、java语言层次的安全性主要体现在哪里?

答:Java取消了强大但又危险的指针,而代之以引用。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的,并且使用指针也容易数组越界。

垃圾回收机制:不需要程序员直接控制内存回收,由垃圾回收器在后台自动回收不再使用的内存。避免程序忘记及时回收,导致内存泄露。避免程序错误回收程序核心类库的内存,导致系统崩溃。

异常处理机制:Java异常机制主要依赖于try、catch、finally、throw、throws五个关键字。

强制类型转换:只有在满足强制转换规则的情况下才能强转成功。

2、Java三大版本各是什么?

答:Java平台包括标准版(J2SE)、企业版(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不是一条单独的语句,他们就有区别i++ :先运算后增1。

4、HashMap的并发问题

答:HashMap是线程不安全的,当size超过一定大小需要扩容时,会重新计算hashcode值,在多线程的情况下可能会产生死循环。可以使用HashTable和ConcurrentHashMap。

5、HashTable和ConcurrentHashMap区别

答:HashTable增加到一定数量时性能会急剧降低,因为迭代时会锁很长时间,而ConcurrentHashMap使用了分割,无论数量多大,都只需要锁map的某一个部分。

6、反射的原理,反射创建类实例的三种方式是什么

答:java反射机制实在运行当中,对任意一个类来说,能够知道它的所有属性和方法,都能调用它的任意一个属性和方法。三种方式:getClass()方式,调用类的静态属性class,Class.forName()

7、java类创建的过程?

答:当虚拟机遇到一个new指令时,检查常量池中是否有该对象所属类的符号引用,如果没有则抛出ClassNotFoundExecption异常,如果有,则检查这个符号所代表的类是否已经被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,向专门的调用信息concurrentHashMap中put(id,object),然后将id和object封装成一个conRequest,使用IOSession.write(conRequest)异步发送请求,然后当前线程在试图使用callback的get()方法获取返回值,在get方法内部使用synchronized获取callback锁,如果获取不到结果则调用callback的wait()方法,释放callback锁并使线程处于等待状态,服务端处理后将结果返回给客户端,客户端的socket专门监听消息的线程接收到消息,分析结果取到id,从concurrentHashMap中获取object中的callback,将结果设置到callback中,监听线程在用synchronized获取callback锁,在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。war工程默认没有WEB-INF目录及web.xml配置文件,IDE通常会显示工程错误,提供完整工程结构可以解决。

19、char型变量中能不能存储一个中文汉字?

答:(1)java采用unicode编码,2个字节(16位)来表示一个字符, 无论是汉字还是数字,字母,或其他语言都可以存储;(2)char 在java中是2个字节,所以可以存储中文。

20、比较一下Java和JavaSciprt两者的区别?

答:JavaScript与Java是两个公司开发的不同的两个产品。Java 是原Sun 公司推出的面向对象的程序设计语言,特别适合于互联网应用程序开发;而JavaScript是Netscape公司的产品,为了扩展Netscape浏览器的功能而开发的一种可以嵌入Web页面中运行的基于对象和事件驱动的解释性语言,它的前身是LiveScript;而Java 的前身是Oak语言。

下面对两种语言间的异同作如下比较:

1)基于对象和面向对象:Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象;JavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象(Object-Based)和事件驱动(Event-Driven)的编程语言。因而它本身提供了非常丰富的内部对象供设计人员使用;

2)解释和编译:Java 的源代码在执行之前,必须经过编译;JavaScript 是一种解释性编程语言,其源代码不需经过编译,由浏览器解释执行;

3)强类型变量和类型弱变量:Java采用强类型变量检查,即所有变量在编译之前必须作声明;JavaScript中变量声明,采用其弱类型。即变量在使用前不需作声明,而是解释器在运行时检查其数据类型。

Java包含的内容很多,这篇文章整理了20道java后台笔试题虽然不多,但都是在java面试中会经常出现,常考的笔试题目,可以起到一个查漏补缺的作用,所以希望大家可以好好学习上面的题目,为面试做好准备从而顺利通过面试。

0人推荐
共同学习,写下你的评论
0条评论
夏天夏雨
程序员夏天夏雨

6篇文章贡献26649字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消