以下为《金融项目面试题》的无排版文字预览,完整内容请下载
金融项目面试题
说几个你常见到的异常。
答:
空指针异常:NullPointerException
??数组下表越界异常:ArrayIndexOutOfBoundsException
内存不足错误:java.lang.OutOfMemoryError
字符串转换为数字异常:NumberFormatException
Java内存模型特点的是什么?分别由哪些关键字?
①特点:原子性、可见性、有序性。
A、原子性:read、load、use、store、write,synchronized关键字保证原子性
B、可见性:synchronized、volatile、final保证可见性
C、有序性:synchronized保证有序性
a.hashCode() 有什么用?与 a.equals(b) 有什么关系?????????hashCode() 方法对应对象整型的 hash 值。它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等。它与 equals() 方法关系特别紧密。根据 Java 规范,两个使用 equal() 方法来判断相等的对象,必须具有相同的 hash code。
一条sql执行过长的时间,你如何优化,从哪些方面?
1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余
或者合并成临时表(业务和算法的优化)?
2、涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合?
3、如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引。加快查询速度?
4、针对数量大的表进行历史表分离(如交易流水表)?
5、数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于主从同步,MySQL有自带的binlog实现?主从同步
多线程会遇到那些问题?产生死锁可能性的最根本原因是什么?怎么解决死锁?
Java程序基本都要涉及到多线程,而在多线程环境中不可避免的要遇到线程死锁的问题。Java不像数据库那么能够检测到死锁,然后进行处理,Java中的死锁问题,只能通过程序员自己写代码时避免引入死锁的可能性来解决。
产生死锁可能性的最根本原因是:线程在获得一个锁L1的情况下再去申请另外一个锁L2,也就是锁L1想要包含了锁L2,也就是说在获得了锁L1,并且没有释放锁L1的情况下,又去申请获得锁L2,这个是产生死锁的最根本原因。另一个原因是默认的锁申请操作是阻塞的。
避免死锁的方法:
1,尽量减少同步范围,即synchronized如果能只包围一个对象,就不要包围这个对象所在方法
2,申请锁的减少交叉,按顺序申请
3,死锁一般是会有一个死锁环,添加睡眠可以减少死锁环的概率
说一下list,set,map的区别。
List:1.可以允许重复的对象。
?2.可以插入多个null元素。
? ? ? ? 3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。
? ? ? ? 4.常用的实现类有?ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适。
?Set:1.不允许重复对象
? 2. 无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator ?或者 Comparable 维护了一个排序顺序。
? ? ? ? 3.?只允许一个 null 元素
? ? ? ? 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 常调用的方法中创建对象,尤其忌讳在循环中创建对象?可以适当的使用hashtable,vector创建一组对象容器,然后从容器中去取这些对象,而不用每次new之后又丢弃。
7、优化配置
去掉一个Vector集合中重复的元素
Vector newVector = new Vector();
For (int i=0;i请点击下方选择您需要的文档下载。
以上为《金融项目面试题》的无排版文字预览,完整内容请下载
金融项目面试题由用户“YYYYZZZZGGGG”分享发布,转载请注明出处