您的位置:

java面试,java面试八股文

本文目录一览:

java面试中经常被问到的问题有哪些?

java面试中经常被问到的问题有如下:

1、进程,线程,协程之间的区别是什么?

简而言之,进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。进程在执行过程中拥有独立的内存单元,而多个线程共享内存资源,减少切换次数,从而效率更高。线程是进程的一个实体,是cpu调度和分派的基本单位,是比程序更小的能独立运行的基本单位。同一进程中的多个线程之间可以并发执行。

2、你了解守护线程吗?它和非守护线程有什么区别?

程序运行完毕,jvm会等待非守护线程完成后关闭,但是jvm不会等待守护线程。守护线程最典型的例子就是GC线程。

3、什么是多线程上下文切换?

多线程的上下文切换是指CPU控制权由一个已经正在运行的线程切换到另外一个就绪并等待获取CPU执行权的线程的过程。

4、创建两种线程的方式?他们有什么区别?

通过实现java.lang.Runnable或者通过扩展java.lang.Thread类。相比扩展Thread,实现Runnable接口可能更优.原因有二:Java不支持多继承。因此扩展Thread类就代表这个子类不能扩展其他类。而实现Runnable接口的类还可能扩展另一个类。类可能只要求可执行即可,因此继承整个Thread类的开销过大。

5、Thread类中的start()和run()方法有什么区别?

start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样。当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。

润和java开发实习面试问什么

关于Java面试,一般应该会问到下面这些问题。

[编程工具]

你常用的编程工具有哪些?这个问题主要是考察你工作的专业性,你是不是具有大型项目的工作经验.

一般好的,Java的编程工具,你比如说,Eclipse, netbeans, Intelli J 等等。

[局部变量和类变量的区别]

这个问题主要是考察选手对于scope的概念。回答这个问题,

就是局部变量是在方法里面定义的。这个变量只能在方法内部才可以被调用。

类变量呢,可以在类的内部,任何地方都可以被调用。类变量还可以添加一些修饰符,限制或者允许外部类调用。

[什么是继承? ]

继承就是说子类可以享有父类的一些定义。

[什么是封装?]

封装是通过类定义的方式,把一些方法和数据包裹起来。

[什么是多态?]

多态是指一个对象可以通过具体的引用类型来调用父类和子类的一些方法。

这三个问题主要是考察选手对于面向对象编程的概念。

[ Overriding 和 overloading的区别]

这两种方法在编程中会经常用到。被问的可能性非常大。

Overriding主要用在子类要使用父类的一些方法定义。方法名必须相同,方法参数必须相同, 返回值类型必须相同。使用这种方法, 子类既可以调用父类的方法也可以添加自己个性化的实现。

Overloading主要用在方法这一层次上。具有同样的方法名,不同的参数类型, 可能会返回不同的数据类型。

[接口和抽象的区别?]

这个问题在面向对象编程里面也是经常被问到的一个问题。

在Java中,无法实现多类继承,所以就引入了接口的概念。接口中,主要是类的声明,没有实现内容。

抽象类中至少要含有一个抽象方法。这个抽象方法只有声明没有实现。抽象类的非抽象方法,需要有实现内容。

[说一下访问修饰符]

这也是面向对象编程里面非常重要的一个概念。

private, protected, public。没有修饰符,就是default。

private只能在本类内部访问。

protected在本类和子类中访问。

public在其他类中都可访问。

default在包内可访问。

[数组和数组列表的区别?]

[String, StringBuilder, StringBuffer的区别? ]

string不可修改。

string builder可修改,线程不安全的。

string buffer可修改,线程安全的。

[HashMap, HashTable 的区别? ]

都是字典类型。

hash map 是线程不安全的。

hash table 是线程安全的。

[Set 相关的问题]

Set里面的数据是唯一的。

sorted set是可排序的。

[Queue 相关的问题]

priority queue先进先出。

[Map相关的问题]

有hash map, linked hash map, tree map.

如果你是一个 Java 面试官,你会问哪些问题?

1、谈谈你对 Java 平台的理解?“Java 是解释执行”,这句话正确吗?考点分析:对于这类笼统的问题,你需要尽量表现出自己的思维深入并系统化,Java 知识理解得也比较全面,一定要避免让面试官觉得你是个“知其然不知其所以然”的人。毕竟明白基本组成和机制,是日常工作中进行问题诊断或者性能调优等很多事情的基础,相信没有招聘方会不喜欢“热爱学习和思考”的面试者。回归正题,对于 Java 平台的理解,可以从很多方面简明扼要地谈一下,例如:Java 语言特性,包括泛型、Lambda 等语言特性;基础类库,包括集合、IO/NIO、网络、并发、安全等基础类库。对于我们日常工作应用较多的类库,面试前可以系统化总结一下,有助于临场发挥。2、对比Hashtable、HashMap、TreeMap有什么不同?考点分析:上面的回答,只是对一些基本特征的简单总结,针对Map相关可以扩展的问题很多,从各种数据结构、典型应用场景,到程序设计实现的技术考量,尤其是在Java 8里,HashMap本身发生了非常大的变化,这些都是经常考察的方面。很多朋友向我反馈,面试官似乎钟爱考察HashMap的设计和实现细节,所以今天我会增加相应的源码解读,主要专注于下面几个方面:理解Map相关类似整体结构,尤其是有序数据结构的一些要点。从源码去分析HashMap的设计和实现要点,理解容量、负载因子等,为什么需要这些参数,如何影响Map的性能,实践中如何取舍等。理解树化改造的相关原理和改进原因。除了典型的代码分析,还有一些有意思的并发相关问题也经常会被提到,如HashMap在并发环境可能出现无限循环占用CPU、size不准确等诡异的问题。我认为这是一种典型的使用错误,因为HashMap明确声明不是线程安全的数据结构,如果忽略这一点,简单用在多线程场景里,难免会出现问题。理解导致这种错误的原因,也是深入理解并发程序运行的好办法。对于具体发生了什么,你可以参考这篇很久以前的分析,里面甚至提供了示意图,我就不再重复别人写好的内容了。3、Java 提供了哪些 IO 方式? NIO 如何实现多路复用?考点分析:在实际面试中,从传统 IO 到 NIO、NIO 2,其中有很多地方可以扩展开来,考察点涉及方方面面,比如:基础 API 功能与设计, InputStream/

程序员小白如何通过Java面试?

1、了解业内招聘要求:多看几家同类岗位的技术要求,大概就知道用人单位的需求了

2、多找找面试常见技术题:不同企业的面试题各种不同,多去找找,多背背

3、简历设计:这个就是要注意在简历中体现自己的项目经验、技术水平

4、面试现场反应:注意自己的着装、语言表达、技术表达

以上都是在你有专业技术的前提下进行的,如果专业技术就是小白,还是先提升专业技术吧