java面试基础知识

1. JAVA中的几种基本数据类型是什么,各自占用多少字节?

答: byte    1字节   short    2字节   int      4字节   long    8字节   char    2字节(C语言中是1字节)可以存储一个汉字  float    4字节

double  8字节   boolean  false/true(理论上占用1bit,1/8字节,实际处理按1byte处理)

2.String类能被继承吗?

     public final class String extends Object,里边有final关键字,所以不能被继承

3.String,Stringbuffer,StringBuilder的区别?

      3.1三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String

      3.2 String 字符串常量 StringBuffer 字符串变量  StringBuilder 字符串变量。String每次赋值并追加其实都是在不断创建新的对象,原来的对象就会被GC回收。而StringBuffer与StringBuilder就不一样了,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的

      3.3 StringBuilder:线程非安全的而StringBuffer:线程安全的

      总结:如果操作少量的数据用 String,单线程操作字符串并大量数据,使用StringBuilder,多线程字符串大量数据使用Stringbuffer

4.error和exception的区别,CheckedException,RuntimeException的区别

      Error表示系统级的错误和程序不必处理的异常,是java运行环境中内部错误或硬件问题(内存不足)

      Exception 表示需要进行捕捉或者程序需要进行处理的异常,主要是程序设计有问题或者在外输入等引起的问题,程序必须进行处理。

      运行时异常,表示无法让程序恢复的异常,导致的原因通常是因为执行了错误的操作,建议终止程序,因此,编译器不检查这些异常

受检查异常,是表示程序可以处理的异常,也即表示程序可以修复(由程序自己接受异常并且做出处理), 所以称之为受检查异常。

5.java多态面试编程题

class Father{

     int x = 1;

    public Father(){

         System.out.println("father");

}

public Father(String s){

     System.out.println("father:"+s);

  }}

class Son extends Father{

    int x = 2;

    public Son(){

    System.out.println("son");

}

public Son(String s){

     System.out.println("son:"+s);

}}

public static void main(String[] args){

   //都是new的无参构造方法

  //第一种情况,输出结果的顺序

   Son f = new Son();

   System.out.println(f.x);    //输出结果 父类无参构造--子类无参构造--子类成员 father son 2

}

//第二种情况,输出结果的顺序

Father f = new Son();

    System.out.println(f.x);  //父类无参--子类无参--父类成员 father son 1

   //第三种情况

    Son f = new Son("hello");  //父类无参--子类有参--子类成员

   System.out.println(f.x);  //father son:hello  2

//第四种

Father f = new Son("hello");  //父类无参--子类有参--父类成员

System.out.println(f.x);    //father  son:hello  1

只要是new子类,无论是调用子类的有参构造还是无参构造都会执行父类的无参构造。当

子类和父类有同一个变量名字的变量时,如果是使用了多态则调用的是父类的变量。否则调用的是子类的变量。

6.多态面试题

http://blog.csdn.net/simon901/article/details/25078397

7.讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当new的时候,他们的执行顺序?

父类静态成员、静态初始化代码块,子类静态成员和初始化代码块,父类实例成员和初始化代码,父类构造方法,子类的实例成员和实例代码块,子类构造方法。

8.抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么?

   1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

   2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

   3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

   4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

10. 继承和聚合的区别在哪。

     聚合:指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。

11. 讲讲你理解的nio。他和bio的区别是啥,谈谈reactor模型。

     NIO 是一种同步非阻塞的 IO 模型。同步是指线程不断轮询 IO 事件是否就绪,非阻塞是指线程在等待 IO 的时候,可以同时做其他任务。同步的核心就是 Selector,Selector 代替了线程本身轮询 IO 事件,避免了阻塞同时减少了不必要的线程消耗;非阻塞的核心就是通道和缓冲区,当 IO 事件就绪时,可以通过写道缓冲区,保证 IO 的成功,而无需线程阻塞式地等待。

     BIO建立网络连接采用BIO模式,先在服务器启动服务,然后客户端启动Socket来对服务器端进行通信,默认情况服务器需要对每个请求建立一堆线程等待请求,客户端发送请求后,先咨询服务器是否有线程响应,没有则一直等待,客户端会线程会等待请求结束后才继续执行

    reactor模型?

12.反射的原理,反射创建类实例的三种方式是什么?

      在运行状态中,对于任何一个类,都能够知道这个类的属性和方法;对于任何一个类都能调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的方法功能称为java反射。

    1.通过对象的getClass方法进行获取

    2.任何数据类型(包括基本数据类型)都具备着一个静态的属性class,通过它可直接获取到该类型对应的Class对象

    3.通过Class.forName()方法获取。

13.反射中,Class.forName和ClassLoader区别?

      Java中class.forName()和classLoader都可用来对类进行加载,不同之处: class.foeName()将类的.class文件加载到jvm中,还对类进行解释,执行类中的static代码块。 classLoader只是将.class文件加载到jvm中,不会执行static中内容,只有在newInstance才执行static代码块

14.描述动态代理的几种实现方式,分别说出相应的优缺点

     JDK代理(Proxy.newProxyInstance()方法创建动态代理)和CGLIB代理

     CGLib创建的动态代理对象性能比JDK创建的动态代理对象的性能高不少,但是CGLib在创建代理对象时所花费的时间却比JDK多得多,所以对于单例的对象,因为无需频繁创建对象,用CGLib合适,反之,使用JDK方式要更为合适一些。同时,由于CGLib由于是采用动态创建子类的方法,对于final方法,无法进行代理

15.动态代理与cglib实现的区别。

      JDK动态代理只能对实现了接口的类生成代理,而不能针对类 。

      CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法。因为是继承,所以该类或方法最好不要声明成final ,final可以阻止继承和多态。

16. 为什么CGlib方式可以对接口实现代理

      CGLIB是通过生成java 字节码从而动态的产生代理对象

17.final的用途

     final修饰变量:java中普通变量是自动初始化,数值变量自动初始化为0,其余变量初始化为空。但final类型变量必须显示初始化,且初始化必须申明时或者在构造方法中直接赋值,不能通过函数赋值修改。

     final修饰方法子类不允许覆盖final方法

     final修饰类该类不能被继承,final类成员方法都不能被覆盖,默认都是final

18.static的用途

     static变量在内存中只有一个拷贝,jvm职位静态分配一次内存,在加载过程中完成变量的内存分配,用类名直接访问。

     static代码块类加载时初始化自动执行

     static方法可直接用类名直接调用,只有一个存储地方,直接使用不需要创建对象。

19.写出三种单例模式实现。(http://blog.csdn.net/goodlixueyong/article/details/51935526

饿汉模式

publicclassSingleton{

privatestaticSingleton instance =newSingleton();

privateSingleton(){}

publicstaticSingleton newInstance(){

returninstance;

}}

懒汉模式

publicclassSingleton{

privatestaticSingleton instance =null;

privateSingleton(){}

publicstaticsynchronizedSingleton newInstance(){

if(null== instance){

instance =newSingleton();

}

return instance;

}}

双重校验锁

publicclassSingleton {

   private static volatile Singleton instance =null;

   privateSingleton(){}

   publicstaticSingleton getInstance() {

      if(instance ==null) {

         synchronized(Singleton.class) {

      if(instance ==null) {

         instance =newSingleton();

}}}

    returninstance;

}}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 223,689评论 6 521
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 95,685评论 3 401
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 170,676评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,496评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,512评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,044评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,423评论 3 427
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,399评论 0 278
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,923评论 1 323
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,973评论 3 343
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,117评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,761评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,440评论 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,929评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,045评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,609评论 3 380
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,147评论 2 363

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,287评论 11 349
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,679评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,662评论 0 11
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,122评论 0 62
  • 现代化社会越来越高科技,智能产品越来越普遍,我们的生活越来越快捷方便,很多事都不再是纯手工去完成,一个按钮...
    Sunflower语阅读 362评论 0 0