浦发银行社招面试--java开发工程师(上)
浦发银行面试--java开发工程师
1.自我介绍
基础部分:
2.java集合框架说一下,常见的有哪些?
3.hashMap和ConcurrentHashMap的区别,以及底层的数据结构是什么?对于具体的改变在
哪个版本回答的比较模糊,其他部分回答的还可以,面试官也没有细问HashMap和
ConcerrentHashMap的put和get过程,没有问扩容、缩容等问题,需要重点去关注一下这
部分?
4.因为说ConcurrentHashMap的时候说到了synchronized和ReetrantLock,说一下Synchronized
和ReentrantLock的区别?这部分对synchronized的锁的优化没说上是在哪个具体的版本改
进的?但是区别还是说的比较好?
5.说一下synchronized 的锁升级过程?这部分说回答的也挺好的?
6.说一下CAS?CAS是什么?用来解决什么问题?底层用的是那个类?回答的还可以,但具体细节还有待细化。
7.CAS的使用会有什么问题?怎么解决该问题?ABA问题,原子类里面的AtomicStampedReference可以解决该问题,带一个时间戳,除了当前值和期望值外,还有当前时间戳和预期时间戳。
6.String s = new String("abc"),创建了几个对象,每个对象分别在什么位置?注意分别回答,s
在栈中,new String对象在堆中,常量在1.7之前在永久代中,字符串常量池在永久代中;
在1.7之后,常量abc在堆中,因为字符串常量池在堆中,通过直接指针的方式连接。
7.由于上面问题提到了堆栈,说下jvm内存结构,每一部分的作用是什么?
8.是不是看过深入理解java虚拟机?我说看过一部分,类文件结构没有看完,其他大概看过了,也没有问类加载的问题
9.jvm 调优部分:实际工作中有调过优吗?JVM 参数设置,STS调优经验,这部分回答的不
是太好,因为确实实际工作中用的比较少,但是作为面试,还是要准备一下相关问题
10.工作中用到过多线程吗?用的是哪些线程池?每种线程池有哪些缺陷?底层所使用的的
队列分别是什么?
11.线程池工作原理部分有了解吗?说一下线程池工作原理?
12.CycliBarrier 用来干什么?CycliBarrier的最后命令由那个线程执行?是主线程还是最后一
个到达的线程?是最后一个到达的线程,可以在CyclicBarrier的构造函数中设置最后要执行的代码,在此之前可以打印出来当前线程的线程名称查看;
13.CountDown 有了解过吗?CountDown和CycliBarrier的区别是是什么?在使用上有啥区别?
#浦发银行##面经##社招##java工程师#