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
- java初中级工程师面试笔试题目及心得(全部实战经验)(答案)
- java初中级工程师面试笔试题目及心得(全部实战经验)(答案)
- java初中级工程师面试笔试题目及心得(全部实战经验)
- 中兴笔试题目及答案(软件开发工程师)
- 初中级java开发工程师面试总结
- java开发工程师笔试面试题目准备
- Java工程师全面笔试题库及答案
- 华为面试/笔试题目(附答案)
- Java笔试常见题题目及答案
- CVTE android系统工程师笔试题及面试经验
- 【面试专题】腾讯PHP实习生笔试题目及答案解析
- 程序员面试笔试中常见50道题目及答案
- 程序员面试笔试中常见50道题目及答案
- 嵌入式工程师笔试面试题目
- java工程师面试心得
- 某公司初中级C++笔试题目
- Java开发工程师常见笔试题及答案
- 百度笔试题目及答案
- 【学习记录】练习题-二分查找
- 大数据IMF传奇行动绝密课程第87课:Flume推送数据到Spark Streaming案例实战和内幕源码解密
- 爬虫抓站技巧总结
- Android中BaseFragment封装多状态视图显示
- 插入排序
- java初中级工程师面试笔试题目及心得(全部实战经验)(答案)
- 构造函数初始化列表
- 用LoadRunner分析资源占用率
- 图解Linux命令之--declare命令
- 单类模式
- E
- 动态规划:最大上升子序列
- UDP之socket通信
- ToLua LuaFramework 使用实战[1]-代码热更新