java初中级工程师面试笔试题目及心得(全部实战经验)(答案)

来源:互联网 发布:幼猫吃什么猫粮好 知乎 编辑:程序博客网 时间:2024/05/01 02:27

JAVA SE部分:

1.string类的常用方法有哪些?
这里写图片描述

2.String,StringBuffer,StringBuilder的区别。

  String 字符串常量 线程安全  操作少量数据  StringBuffer 字符串变量 线程安全 操作大量数据 速度慢  多线程适合用  StringBuilder 字符串变量  线程不安全  操作大量数据  速度快  单线程适合用

3.String str = new String(“xyz”);创建了几个对象。

    如果String常量池中,已经创建了"xyz",则不会继续创建,此时直创建了一个对象new String("xyz");    如果String常量池中没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象是new String("xyz");

4.说几个你常见到的异常。
这里写图片描述

Throwable是所有异常的根,java.lang.ThrowableError是错误,java.lang.ErrorException是异常,java.lang.Exception一般分为Checked异常和Runtime异常,所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedException。NullPointerException 空指针异常ArithmeticException 除0异常ClassCastException  类型转换ArrayIndexOutOfBoundsException 数组越界异常

5.hashtable和hashmap的区别是什么?
这里写图片描述

6.hashmap的底层实现方式是什么?

HashMap是一个“链表的数组”的数据结构,每个元素存放链表头结点的数组,即数组和链表的结合体。

7.Vector 和 ArrayList 的区别?

Vector是线程安全的,运行速度较ArrayList慢ArrayList线程不安全,运行速度快相同点:都是顺序存储,底层数组实现。

8.怎么遍历一个map?

遍历map的三种方法:
public class Collection_Map {    public static void main(String[] args) {        Map<String, Student> hm = new HashMap<String,Student>();        Student stu1 = new Student(1,"MapTom");        Student stu2 = new Student(2,"MapJack");        Student stu3 = new Student(3,"MapKoby");        hm.put("1", stu1);        hm.put("2", stu2);        hm.put("3", stu3);        /*第一种  先将map对象转成set,然后再转为迭代器*/        Iterator<Entry<String, Student>> it = hm.entrySet().iterator();        while (it.hasNext()) {            //System.out.println(it.next().getKey());            System.out.println(it.next().getValue().getName());        }        /*第二种 先将map转为set类型的key值集合,然后转为迭代器*/        Iterator<String> it2 = hm.keySet().iterator();        while(it2.hasNext()){        /*  System.out.println(it2.next());*/            System.out.println(hm.get(it2.next()).getName());        }        /*第三种*/        for(Map.Entry<String, Student> entry : hm.entrySet()){            String key = entry.getKey();            String value = entry.getValue().getName();            System.out.println(value);        }        /*第四种*/        for(String key : hm.keySet()){            System.out.println(hm.get(key).getName());        }    }}

9.说一下list,set,map的区别。

List特点:元素有放入顺序,元素可重复 Map特点:元素按键值对存储,无放入顺序 Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的        HashCode决定的,其位置其实是固定的) List接口有三个实现类:LinkedList,ArrayList,Vector LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的           地址。链表增删快,查找慢 ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低 Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现) Query接口有一个实现类:LinkList Map接口有三个实现类:HashMap,HashTable,LinkeHashMap HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null SortedMap有一个实现类:TreeMap 其实最主要的是,list是用来处理序列的,而set是用来处理集的。Map是知道的,存储的是键值对 set 一般无序不重复.map kv 结构 list 有序 

10.你的项目中用的是多线程还是单线程?

一般是多线程,不清楚了,根据特定情况用吗?等查清楚再说!

11.多线程会遇到那些问题?怎么解决死锁?

并发,死锁可以通过加同步、上锁解决死锁问题。

12.用java写一个多线程程序,如写四个线程,二个加1,二个对一变量减一,输出:

java    package test;       /**      * 加一线程与减一线程共同操作一个数      * 两个问题:        * 1、线程同步--synchronized        * 2、线程之间如何共享同一个j变量--内部类        * @author liuwei      */      public class TMain {            int j=1;            public synchronized void inc(){                         j++;                          System.out.println(Thread.currentThread().getName()+"-inc:"+j);                     }        class T1 implements Runnable{          public void run(){              inc();          }        }        public synchronized void dec(){                 j--;                  System.out.println(Thread.currentThread().getName()+"-dec:"+j);             }      class T11 implements Runnable{          public void run(){              dec();          }      }      public static void main(String[] args) {          TMain t = new TMain();          T1 t1 =t.new T1();          T11 t11 =t.new T11();          for(int i=0;i<20;i++){           Thread thread=new Thread(t1);              thread.start();           Thread thread1=new Thread(t11);              thread1.start();          }       }      }  

13.至少说六点interface和abstract的区别。

1.相同点 A. 两者都是抽象类,都不能实例化。 B. interface实现类及abstrctclass的子类都必须要实现已经声明的抽象方法。2. 不同点 A. interface需要实现,要用implements,而abstract class需要继承,要用extends。 B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。 C. interface强调特定功能的实现,而abstractclass强调所属关系。 D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。    interface中的每一个方法都是抽象方法,都只是声明的(declaration,没有方法体),实现类必须要实    现。而abstractclass的子类可以有选择地实现。 这个选择有两点含义:     一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类    必须实现。那些没有abstract的方法,在Abstrct class中必须定义方法体。     二是abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,    可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须    也声明为抽象类。既是抽象类,当然也不能实例化。 E. abstract class是interface与Class的中介。 interface是完全抽象的,只能声明方法,而且只能声明pulic的方法,不能声明private及protected的方法,不能定义方法体,也不能声明实例变量。然而,interface却可以声明常量变量,并且在JDK中不难找出这种例子。但将常量变量放在interface中违背了其作为接口的作用而存在的宗旨,也混淆了interface与类的不同价值。如果的确需要,可以将其放在相应的abstractclass或Class中。 abstract class在interface及Class中起到了承上启下的作用。一方面,abstract class是抽象的,可以声明抽象方法,以规范子类必须实现的功能;另一方面,它又可以定义缺省的方法体,供子类直接使用或覆盖。另外,它还可以定义自己的实例变量,以供子类通过继承来使用。3. interface的应用场合 A. 类与类之前需要特定的接口进行协调,而不在乎其如何实现。 B. 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。 C. 需要将一组类视为单一的

14.怎么把数组放到对象里面?

    java    String[] dataArray = new String[]{"123","234","345"};    List<String> dataList = new ArrayList<String>();    for(String s : dataArray){        dataList.add(s);    }

15.给你一组字符串如:7i8hy4jjnb2.让你编程输出里面的数字:7842.

    java    String str = "7i8hy4jjnb2";    char[] ch = str.toCharArray();    int bytes = ch.length;    for(int i=bytes;i--;){        if(ch[i]>255){            bytes++;            System.out.println(ch[i]);        }    }

16.多线程有几种实现方式?都是什么?同步有几种实现方式?都是什么?

    **多线程实现方式:**    1.extends Thread 类    2.implements Runnable 接口    **同步实现两种方式:**    1.在返回类型上加 synchronized    2.使用wait() 和 notify()

17.java类实现序列化有几种实现方式?都是什么?(二种)

实现接口Serializable实现接口Externalizable

18.java开发中“==” 和 “equals” 有何区别?

equals()是个方法,继承类Object== 是个运算符,表示内存地址是否相同==比较的是2个对象的地址,而equals比较的是2个对象的内容。显然,当equals为true时,==不一定为true。==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。       

19.static局部变量与全局变量的区别,编译后映射文件是否包含此类变量的地址。

  static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝;

20.在日常工作中,使用过哪些 java core 包,遇到java core 的那些异常?(可以写中文)

不知道
0 0
原创粉丝点击