Java程序员在上海应届生应该知道什么

第一次,请多多指教: 送给在上海面试的同学,笔试题大多是逻辑问题,算法问题,面试问的也就是你项目中用到的技术,再问一下业务逻辑,Java基础
1.Java基础
        ArrayList和linkedList区别
它们都实现了List接口,都是线程不安全的,ArrayList内部是以Object数组的形式实现的,所以ArrayList随机访问其中的元素时,是比较快的,当它向中间或者前面添加数据时,非常耗时间的。LinkedList内部是以链表的方式实现的,在前面或者中间添加数据或者删除数据是非常快的。
        list,set,map区别
List 与 Set 具有相似性,它们都是单列元素的集合,所以,它们有一个功共同 的父接口 Collection 接口。Set 里面不允许有重复的元素,即不能有两个相等的对象 。 Map 与 List 和 Set 不同,它是双列的集合每次存储时,要存储一对 key/value,不能存 储重复的 key,这个重复的规则也是按 equals 比较相等。取则可以根据 key 获得相应的 value,即 get(Object key)返回值为 key 所对应的 value。另外,也可以获得所有的 key 的结合。
        final, finally, finalize 的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成 final 类型,例如,一段代码……finally 是异常处理语句结构的一部分,表示总是执行。finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM 不保证此方法总被调用
        "=="和 equals 方法有什么区别?
==它是用作两个变量的值是否相等,equels是用作两个对象是否相等,==只要是String没有new,而是直接声明的像这样
String s="iii";
String a="iii";
if(s==a){
System.out.println("对的");
}else{
System.out.println("错的");
}
它的结果是对的,像这样
String s=new String("iii");
String a=new String("iii");
if(s==a){
System.out.println("对的");
}else{
System.out.println("错的");
}
它的结果就是错的,这就是==与equals的区别
abstract class(抽象类)和 interface(接口)有什么区别?
共同点:接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。
区别:1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非
抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是 public,protected 和(默认类型,虽然
eclipse 下不报错,但应该也不行),但接口中的抽象方法只能是 public 类型的,并且
默认即为 public abstract 类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可
以任意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public
static final 类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
最重要的就是Java多线程
什么是线程,什么是进程,怎么实现多线程几种方法,怎样使线程同步或者安全。。。。
1.同步和异步有何异同  
官方解释:如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读 的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方 法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。
线程同步:A线程要请求某一个资源,但是这个资源被B线程使用者,A线程只能等待,B线程执行完成后,A才能执行。
线程异步:A线程要请求某一个资源,但是B线程正在使用,因为没有同步机制,所以A线程不用等待。
2.java中实现同步的几种方法。
1.ReentrantLock是Jdk内置的一个锁对象,可以实现锁对象
它自己不会释放锁,必须人工手动释放,必须在finally语句中释放
2.Synchronized关键字实现锁同步,也是内部锁

3.ThreadLocal 是一种把变量放到线程本地的方式来实现线程同步的。
4.Wait/notify 都是Object类的方法
3.Java中实现线程的方式
1.继承Thread类
2.实现Runnable接口
3.实现Callable接口
4.使用线程池
4.线程同步的意思
1.wait:使线程处进入等待状态,并释放所持有对象的锁
2.sleep():使线程进入一个睡眠状态,它是一个静态方法
3.notify():唤醒一个正在等待的线程,它不能确定唤醒哪一个处于等待的线程,这由JVM决定,也不是按优先级的。
4.notifyAll():唤醒全部正在等待的线程,并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

5.synchronized 和 java.util.concurrent.locks.Lock 的异同

1.主要相同点:Lock 能完成 synchronized 所实现的所有功能 
主要不同点:Lock 有比 synchronized 更精确的线程语义和更好的性能。synchronized 会自动释放锁,而 Lock 一定要求程序员手工释放,并且必须在 finally 从句中释放。

还有什么问题,请在下方留言:::::::::
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值