广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

JAVA面试内容只基础知识_惠州JAVA培训

作者:黄君发布时间:2020-11-30分类:Java技术浏览:1059


导读:JAVA面试会考到相关基础知识,我们再来简单梳理一下基础知识点。

 java的基础部分

1.1 简单讲一下java的跨平台原理

      由于各操作系统(windows,liunx等)支持的指令集,不是完全一致的。就会让我们的程序在不同的操作系统上要执行不同程序代码。Java开发了适用于不同操作系统及位数的java虚拟机来屏蔽个系统之间的差异,提供统一的接口。对于我们java开发者而言,你只需要在不同的系统上安装对应的不同java虚拟机、这时你的java程序只要遵循java规范,就可以在所有的操作系统上面运行java程序了。

String str =new String(“bbbb”);

而StringBuillder StringBuffer,是内容可以改变的字符串。StringBuillder StringBuffer底层使用的可变的字符数组(没有使用final来修饰)

 

2.最经典就是拼接字符串。

  1. String进行拼接.String c = “a”+”b”;

  2. StringBuilder或者StringBuffer

StringBuilder sb = new StringBuilder(); sb.apend(“a”).apend(“b”)

 

拼接字符串不能使用String进行拼接,要使用StringBuilder或者StringBuffer

 

3.StringBuilder是线程不安全的,效率较高.而StringBuffer是线程安全的,效率较低。

 

1.8、讲一下java中的集合?

Java中的集合分为value,key--vale(Conllection Map)两种。

存储值有分为List 和Set.

List是有序的,可以重复的。

Set是无序的,不可以重复的。根据equals和hashcode判断,也就是如果

一个对象要存储在Set中,必须重写equals和hashCode方法。

存储key-value的为map.

 

ArrayList和LinkedList的区别?

  List常用的ArrayList和LinkedList。区别和使用场景?

  ArrayList底层使用时数组。LinkedList使用的是链表。

  数组查询具有所有查询特定元素比较快。而插入和删除和修改比较慢(数组在内存中是一块连续的内存,如果插入或删除是需要移动内存)。

  链表不要求内存是连续的,在当前元素中存放下一个或上一个元素的地址。查询时需要从头部开始,一个一个的找。所以查询效率低。插入时不需要移动内存,只需改变引用指向即可。所以插入或者删除的效率高。

 

ArrayList使用在查询比较多,但是插入和删除比较少的情况,而LinkedList使用在查询比较少而插入和删除比较多的情况。

 

1.9讲一下HashMap哈HashTable的区别?HashTable和ConcurrentHashMap的区别?

相同点:HashMap和HasheTalbe都可以使用来存储key--value的数据。

区别:

  1. HashMap是可以把null作为key或者value的,而HashTable是不可以的。

  2. HashMap是线程不安全的,效率较高。而HashTalbe是线程安全的,效率较低。

 

?我想线程安全但是我又想效率高?

通过把整个Map分为N个Segment(类似HashTable),可以提供相同的线程安全,但是效率提升N倍,默认提升16倍。

   

1.10、实现一个拷贝文件的工具类使用字节流还是字符流?

我们拷贝的文件不确定是只包含字符流,有可以能有字节流(图片、声音、图像等),为考虑到通用性,要使用字节流。

 

1.11、讲一下线程的几种实现方式?启动方式?区分方式?

①实现方式

  1. 通过继承Thread类实现一个线程

  2. 通过实现Runnable接口实现一个线程

   继承扩展性不强,java总只支持单继承,如果一个类继承Thread就不能继承其他的类了。

②怎么启动?

   Thread thread = new Thread(继承了Thread的对象/实现了Runnable的对象)

   thread.setName(“设置一个线程名称”);

   thread.start();

   启动线程使用start方法,而启动了以后执行的是run方法。

③怎么区分线程?在一个系统中有很多线程,每个线程都会打印日志,我想区分是哪个线程打印的怎么办?

   thread.setName(“设置一个线程名称”); 这是一种规范,在创建线程完成后,都需要设置名称。

 

1.12有没有使用过线程并发库?

简单了解过?

JDK5中增加了Doug Lea的并发库,这一引进给Java线程的管理和使用提供了强大的便利性。 java.util.current包中提供了对线程优化、管理的各项操作,使得线程的使用变得的心应手。该包提供了线程的运行,线程池的创建,线程生命周期的控制.

 

Java通过Executors提供四个静态方法创建四种线程池,分别为:

newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。

newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行

 

1.13线程池的作用?

  1. 限定线程的个数,不会导致由于线程过多导致系统运行缓慢或崩溃

  2. 线程池不需要每次都去创建或销毁,节约了资源、

  3. 线程池不需要每次都去创建,响应时间更快。

连接池也是一样?

 

1.14讲一下什么是设计模式?常用的设计模式有哪些?

设计模式就是经过前人无数次的实践总结出的,设计过程中可以反复使用的、可以解决特定问题的设计方法

单例(饱汉模式、饥汉模式)

  1. 构造方法私有化,让出了自己类中能创建外其他地方都不能创建

2、在自己的类中创建一个单实例(饱汉模式是一出来就创建创建单实例,而饥汉模式需要的时候才创建)

3、提供一个方法获取该实例对象(创建时需要进行方法同步)

工厂模式:Spring IOC就是使用了工厂模式.

       对象的创建交给一个工厂去创建。

代理模式:Spring AOP就是使用的动态代理。



素材来源于多纤果冻,如侵立删。

标签:惠州北大青鸟惠州JAVA培训惠州IT培训惠州软件培训惠州软件开发


Java技术排行
标签列表
网站分类
文章归档
最近发表