整理华为最新Java软件开发应试人员考试试题

JAVA基础篇

1、简述你所知道的JAVA修饰符及各自的使用机制?
public:允许所有客户访问
protected:只能在本包内被该类的子类所使用
private:只允许在本类内使用
abstract:没有提供实现,需要子类提供
synchronized:方法获得对对象监控的访问权;如果该方法是static类型的,获得是对类本身的访问权。
final:你只能定义一个实体一次,以后不能改变它或继承它。一个final修饰的类不能被子类化,一个final修饰的方法不能被重写,一个final修饰的变量不能改变其初始值
super:构造器和方法,都用关键字super指向超类,但是用的方法不一样。方法用这个关键字去执行被重载的超类中的方法。

2. String、StringBuffer与StringBuilder之间区别?别简述各自的执行效率?
区别:(百度)

执行速度:StringBuilder >  StringBuffer  >  String

使用场景:
1.如果要操作少量的数据用 = String 
2.单线程操作字符串缓冲区下操作大量数据 = StringBuilder 
3.多线程操作字符串缓冲区下操作大量数据 = StringBuffer

3、静态变量和实例变量的区别?能在静态方法中调用非静态变量吗?
在这里插入图片描述

这里也整理了一下其他的面试资料,需要的话可以点击:点这个!点这个!暗号:csdn

4、继承和接口是什么?以及他们的区别?

5、HashMap和Hashtable的区别?
1,Hashtable是基于陈旧的Dictionary类的,HashMap是Map接口的一个实现。 
2,Hashtable的方法是同步的,而HashMap的方法不是 
3,只有HashMap可以让你将空值作为一个表的条目的key或value

6、抽象类(abstract class)和接口(interface)有什么区别?

7、重载(Overload)和重写(Override)的区别。Overloaded的方法是否可以改变返回值的类型?
Overload是重载,是有相同的方法名,但参数类型或个数彼此不同  
Override是重写,是在子类与父类中,子类中的方法的方法名,参数个数、类型都与父类中的完全一样,在子类中覆盖掉了父类的改方法。

8、你所知道的集合类都有哪几类?主要区别有哪些并简单描述?
集合类型主要有3种:set(集)、list(列表)和map(映射)

集 Set 
它的对象不按特定方式排序,只是简单的把对象加入集合中  对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象。

列表 List 
List接口与其实现类是容量可变的列表,可以按照索引访问集合中的元素,是有序的集合 列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。常用的有ArrayList vector

映射 Map 
映射中每个项都是成对的,Map是把键对象和值对象进行关联的容器。  映射中存储的每个对象都有一个相关的关键字(Key)对象,关键字决定了对象在映射中的存储位置,关键字应该是唯一的,常用的有HashMap,HashTable

9、JAVA SERVLET API中forward() 与redirect()的区别?

10、写出JSP的常用内置对象?以及每个内置对象的简单介绍?

11、JAVA解析XML有哪几种方法?并简述各自的优缺点

12、概述MVC体系结构及优点
M:模型(Model),V:视图(View),C:控制Controller)。 
MVC模式的目的就是实现Web系统的职能分工。 
Model层实现系统中的业务逻辑。 View层用于与用户的交互。Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

概括一下吧,用户浏览,由URL路由解析地址,如何指定对应的控制器©去处理,结合业务逻辑层(M),处理数据,比方说增\删\改\查,完成之后,在调用指定的视图(V),把处理的结果回传给用户. 
意义就是:职能分工

13. 线程和进程的区别?实现多线程的方式有哪几种?如何实现多线程同步?
区别: 
线程和进程是不同的,每个进程都是一个独立运行的程序,拥有自己的变量,且不同进程间的变量不能共享;而线程是运行在进程内部的,每个正在运行的进程至少有一个线程,而且不同的线程之间可以在进程范围内共享数据。也就是说进程有自己独立的存储空间,而线程是和它所属的进程内的其他线程共享一个存储空间。

实现多线程的方法: 
1、 继承java.lang.Thread,并重写它的run()方法,将线程的执行主体放入其中。
2、 实现java.lang.Runnable接口,实现它的run()方法,并将线程的执行主体放入其中。

如何实现线程同步: 
给一个方法增加synchronized修饰符之后就可以使它成为同步方法,这个方法可以是静态方法和非静态方法,但是不能是抽象类的抽象方法,也不能是接口中的接口方法

14:中的异常处理机制的简单和应用。
当Java程序违反了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是Java类库内置的语义。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是Java允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类

15:线程同步的方法(类里有哪些方法来支持线程同步)。

16. Error与Exception有什么区别
Error表示系统级的错误和程序不必处理的异常, 
Exception表示需要捕捉或者需要程序进行处理的异常。

17.谈谈final, finally, finalize的区别。
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

finally—异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

同时提供【免费】的Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。需要的朋友可以点击:点这个!点这个!暗号:csdn。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书等。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/HarderXin/article/details/108447473