JavaWeb面试整理

以下内容均来自网络,并附上主要内容链接,侵删!原文链接


1. 简单讲一下Java的跨平台原理

答:由于非跨平台的情况下,对于不同的操作系统,那么就需要开发几套不同程序代码。为了解决这个问题,java通过不同系统,不同版本,不同位数的JVM来屏蔽不同的系统指令集差异而对外提供统一的接口(JavaAPI),所以这样对于我们普通的开发者来说,只需要开发符合Java规范的程序即可。如果程序需要部署到不同的操作系统,那么我们只需要按照对应版本的虚拟机即可。

那C语言为什么不能跨平台呢?

首先回忆一下C语言的执行过程,编译一个hello.c的程序需要经过四个阶段:预处理,编译,汇编和链接。预处理阶段执行程序中#开头的命令并执行相关操作,编译阶段将上一步处理结果翻译成汇编程序,汇编阶段将汇编语言翻译成计算机可以识别的二进制指令。由于不同的CPU对二进制指令识别的意义是不同的,所以说C语言不能实现跨平台运行。Java语言的平台无关性在于Java虚拟机在不同的平台上是不同的,我们写好的.java文件统一编译成特定格式的.class文件,在不同机子上的JVM上执行结果是一致的。

2. java开发环境的步骤

答:需要的内容:对应操作系统的JDK、对应版本位数的IDE(开发工具,比如Eclipse或者IDEA)、服务器(web项目需要配置,如tomcat,jetty)。

步骤:

(1)下载JDK,并且配置好Java_Home这个环境变量,因为对于开发工具和Tomcat都需要依赖这个配置变量。

(2)下载IDE,正常解压即可。

(3)下载Tomcat ,正常解压即可,并且将这个集成到开发工具中,便于项目进行发布。 三者的版本要符合规范

3. Java中Int数据占几个字节

4个字节,32位

4. 面向对象的特征有哪些?

答:封装、继承、多态、(抽象)

封装:将客观事物封装成抽象的类,并且可以通过protect、private、public对外部对象的访问进行控制。

继承:子对象可以继承父对象的属性和方法

多态:重写和覆盖

5. 拆箱和装箱

答:装箱:就是基本数据类型转换成对应的包装类型。

比如:int  x  = 5 ; -----Integer y = x ; (这是自动装箱)

实际上进行的是:Integer y = Integer.valueOf(x); (这是手动装箱)

拆箱:就是包装类型转换成对应的基本数据类型。

比如:Integer a = 5;     --------  int b = a ; (这发生了自动拆箱)

实际进行的是:int b = a.intValue() ; (手动拆箱)

那么,基本数据类型和包装类型有什么区别呢?原文

  • 在 Java 中,一切皆对象,但八大基本类型却不是对象。
  • 声明方式的不同,基本类型无需通过 new 关键字来创建,而包装类型需 new 关键字。
  • 存储方式及位置的不同,基本类型是直接存储变量的值保存在栈中能高 效的存取,包装类型需要通过引用指向实例,具体的实例保存在堆中。
  • 初始值的不同,包装类型的初始值为 null,基本类型的的初始值视具体的类型而定,比如 int 类型的初始值为 0,boolean 类型为 false。
  • 使用方式的不同,比如与集合类合作使用时只能使用包装类型。

6. 有了基本数据类型,为什么还需要包装类型?

答:Java是面向对象的语言,而基本数据类型没有面向对象的特性,而且包装类型存在缓存,这样能够更加好的利用资源。(比如,Integer的缓存内容就是-128--------127)

Integer的最大值+1与Integer的最小值-1不会溢出

7. equals和==的区别  参考


‘==’:判断两个对象是否为同一个引用(即首地址)或者基本数据类型是否相等

Equals:判断两个对象的内容是否一样,这个一般是用于引用对象的比较的使用。

8. 实现一个拷贝文件的工具类,使用字符流还是字节流

使用字节流,因为我们拷贝的文件中,可能有图片,图像,如果使用字符流就无法进行拷贝,所以为了工具类的实用性,采用字节流更好。

9. 简单说一下forward和redirect的区别

相同点:都是对请求进行处理

不同点:

(1)forward是发生在服务器端,效率更好,而redirect是发生在了客户端

(2)forward是请求转发,只是一次请求,而redirect是相当于了两次请求

(3)Forward不会改变客户端的URL显示,而redirect会改变客户端的URL的显示

10. servlet的生命周期

答:加载servlet的class---》实例化Servlet-----》初始化servlet(调用init方法)------》调用服务service方法(处理doget和dopost方法)-----》servlet容器关闭时调用销毁方法(destory方法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值