java面试题(摘录)

1.抽象,继承,封装,多态

2.基本数据类型的字节数

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.5px Helvetica }

byte:1、int:4、char:2、long:8、float:4、double:8、boolean:1 和short:2

3.String , StringBuffer,StringBuilder的区别

字符串较少拼接时,用String

字符串频繁拼接时,单线程环境下应该使用StringBuilder来保证较好的性能,当需要保证多线程安全时,就 应该使用StringBuffer

4.servlet的生命周期,与CGI的区别

实例化,init(),service方法,doget或doPost方法,调用destroy()销毁

servlet一个实例服务于多个请求,CGI一个请求开一个进程,服务完成就销毁

5.JSP中动态INCLUDE与静态INCLUDE的区别

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.5px Helvetica }

6.round 方法返回与参数最接近的长整数,参数加1/2 后求其floor.

7.构造器Constructor是否可被override?

8.iterator

Iterator<String> it = books.iterator();
//这种形式遍历可以用it.remove()来删除元素,其他的方式都不可以,会引发异常.
while(it.hasNext()){
    System.out.println(it.next());
}

9.集合安全

SortedSet<String> s = Collections.synchronizedSortedSet(new TreeSet<>());

10.Runnable 和 Thread 的区别

Runnable对象仅仅作为Thread对象的target,Runnable实现类里包含的run()方法仅作为线程执行体.而实际的线程对象依然是Thread实例,

只是该Thread线程负责执行其target的run()方法.

11.join()使用方法,先start(),再join();

public static void main(String[] args)throws Exception{
        for (int i=0;i<100;i++){
            if(i==20){
                JoinThread jt = new JoinThread("join");
                jt.start();
                jt.join();
            }
            System.out.println(Thread.currentThread().getName()+"--- "+i);
        }
    }

12.后台线程

在后台运行,为其他线程提供服务,比如GCC,调用Thread的setDaemon(true)方法,可将其设置为后台线程。

如果一个进程的所有前台线程死亡,JVM会通知这个进程的后台线程令其死亡。

需要先调用setDaemon(true),再start(),否则会引发异常。

13.改变线程的优先级

Thread类提供了setPriority(int newPriority)和getPriority()来设置

和返回指定线程的优先级.10最大,1最小,正常为5

14.synchronized

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #931a68 }

synchronized的本质是对象锁,锁定方法时,默认锁定this,当一个对象被锁时,无法调用有相同对象锁的其他被锁代码块。

15.wait()和sleep()的区别

wait()会释放同步监视器,sleep()和yield()不会释放同步监视器

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.5px Helvetica }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.5px Helvetica }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #931a68 }

时间: 2024-10-14 08:14:40

java面试题(摘录)的相关文章

java 面试题总结(一)

从网上找了些面试题,自己手工总结了理解了一下,如有理解错误,还请指正. java基础 1.String 为什么是final的? https://www.zhihu.com/question/31345592 String作为引用类型,类设计成final的,不让任何子类有机会继承它,目的时保证String可以作为一个不可变的对象存储起来. String使用非常频繁,因此设计成一种类似于int那样的值传递,需要有直接的值,而且值不能被改变,如果String的值能够被轻易改变将是非常不安全的. Str

Java面试题全集(中)

这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet. 补充:Sun Microsystems公司在1996年发布Servlet技术就是为了和CGI进行竞争,Servlet是一个特殊的Java程

Java面试题下

这部分主要是开源Java EE框架方面的内容,包括hibernate.MyBatis.spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题,如果需要了解相关内容,可以参考我的另一篇文章<Java面试题集(86-115)>.此外,这篇文章还对企业应用架构.大型网站架构和应用服务器优化等内容进行了简单的探讨,这些内容相信对面试会很有帮助. 126.什么是ORM?答:对象关系映射(Object-Relational Mapping,简称OR

java面试题及答案

JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象.2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派

【福利 】Java面试题最全 (中)

这部分主要是与Java Web和Web Service相关的面试题. 阅读全文 更多: java,java学习,java面试题  http://techfoxbbs.com

【福利 】Java面试题最全 (下)

这部分主要是开源Java EE框架方面的内容,包括Hibernate.MyBatis.Spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题 阅读全文 更多java,java学习,java面试题 http://techfoxbbs.com

Java面试题笔记

这是我从网上收集的常见Java面试题及答案,但只收录了我不会做的题目. 创建线程有几种不同的方式?你喜欢哪一种?为什么? 有三种方式可以用来创建线程: 继承Thread类 实现Runnable接口 应用程序可以使用Executor框架来创建线程池 实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类.在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口.同时,线程池也是非常高效的,很容易实现和使用. 在监视器(Monitor)内部,是如

JAVA面试题最全集

JAVA面试题最全集 2009-01-19 15:40 3458人阅读 评论(0) 收藏 举报 java面试ejbservletstringhashmap 一.Java基础知识1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别.2.字符串的操作:  写一个方法,实现字符串的反转,如:输入abc,输出cba  写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc.3.数据类型之间的转换  如何将数值型字符转换为数字(Integer,Doubl

一道java面试题-方法静态分派

一道面试题,下面程序的输出是? public class StaticDispatch { static abstract class Human{ } static class Man extends Human{ } static class Woman extends Human{ } public void sayHello(Human guy){ System.out.println("hello , guy!"); } public void sayHello(Man gu