java 金融面试题目_面试题 - java金融 - 博客园

本文汇总了Java金融面试中常见的问题,包括线程安全的概念、String的不可变性、HashMap的实现原理、单例模式的实现、ArrayList与LinkedList的区别、线程创建方式、JVM内存结构、Lock与Synchronized的对比、数据库隔离级别以及JVM相关参数的解释。这些知识点是Java并发编程和系统调优的核心内容。
摘要由CSDN通过智能技术生成

1,什么是线程安全 (参考书:https://book.douban.com/subject/10484692/)

不对共享变量进行修改

2,都说String是不可变的,为什么我可以这样做呢

String a = "1";

a = "2";

a只是一个引用 当a=2时候 a指向a=2 此时 a=1照样在内存中并没有改变。

3,HashMap的实现原理

jdk1.7   数组+链表

jdk1.8   数据+链表+红黑树

4,写出三种单例模式,如果能考虑线程安全最好

/**

* 描述:单利模式

*

* @author

* @create 2018-05-02 15:18

*/

public class Singleton {

/**

* 懒汉模式

*/

private static final Singleton singleton = new Singleton();

public static Singleton getInstance() {

return singleton;

}

/**

* 双重校验

*/

private  static volatile    Singleton  singleton1 ;

public static  Singleton getInstance1(){

if (null == singleton1) {

synchronized (Singleton.class) {

if (null == singleton1) {

return new Singleton();

}

}

}

return singleton1;

}

/**

* 静态内部类

*/

private static class LazyHolder {

private static final Singleton INSTANCE = new Singleton();

}

public static final Singleton getInstance2() {

return LazyHolder.INSTANCE;

}

5,ArrayList和LinkedList有什么区别

ArrayList的实现用的是数组,LinkedList是基于链表,ArrayList适合查找,LinkedList适合增删

6,实现线程的2种方式

1、继承Thread类创建线程 2、实现Runnable接口创建线程

7,JVM的内存结构

JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配;

8,Lock与Synchronized的区别

Synchronized Java的关键字,在jvm层面上实现通过对象头的监入监出 ,锁的释放是以获取锁的线程执行完同步代码,释放锁 线程执行发生异常,jvm会让线程释放锁假设A线程获得锁,B线程等待。如果A线程阻塞,B线程会一直等待,无法获取锁的状态

可重入 不可中断 非公平

Lock 是一个类 在finally中必须释放锁,不然容易造成线程死锁、  可以判断锁的状态

9,数据库隔离级别有哪些,各自的含义是什么,MYSQL默认的隔离级别是是什么。

1.READ UNCIMMITTED(未提交读)

2.READ COMMITTED(提交读)

3.REPEATABLE READ(可重复读)

4.SERIALIZABLE(可串行化)

默认是可重复读

10,请解释如下jvm参数的含义:

-server -Xms512m -Xmx512m -Xss1024K

-XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=20 XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly。

-Xms512m JVM最小内存

-Xmx512m JVM最大内存

-Xss1024K 每个线程的堆栈大小

-XX:PermSize=256m  表示非堆区初始内存分配大小,其缩写为permanent size(持久化内存)

XX:MaxPermSize=512m 表示对非堆区分配的内存的最大上限。

-XX:MaxTenuringThreshold=20 对象年龄标记次数

XX:CMSInitiatingOccupancyFraction 是指设定CMS在对内存占用率达到80%的时候开始GC(因为CMS会有浮动垃圾,所以一般都较早启动GC);

-XX:+UseCMSInitiatingOccupancyOnly 只是用设定的回收阈值(上面指定的70%),如果不指定,JVM仅在第一次使用设定值,后续则自动调整.

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值