- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
银行java开发笔试面试题13道(含答案)--第1页
银⾏java开发笔试⾯试题 13道(含答案)
1、在多线程环境中使⽤HashMap会有什么问题?在什么情况下使⽤get()⽅法会产⽣⽆限循环
HashMap本⾝没有什么问题,有没有问题取决于你是如何使⽤它的。⽐如,你在⼀个线程⾥初始化了⼀个HashMap然后在多
个其他线程⾥对其进⾏读取,这肯定没有任何问题。有个例⼦就是使⽤HashMap来存储系统配置项。当有多于⼀个线程对
HashMap进⾏修改操作的时候才会真正产⽣问题,⽐如增加、删除、更新键值对的时候。因为put()操作可以造成重新分配存
储⼤⼩(re-sizeing)的动作,因此有可能造成⽆限循环的发⽣,所以这时需要使⽤Hashtable或者ConcurrentHashMap ,⽽
后者更优。
2、不重写Bean的hashCode()⽅法是否会对性能带来影响
这个问题⾮常好,每个⼈可能都会有⾃⼰的体会。按照我掌握的知识来说,如果⼀个计算hash的⽅法写得不好,直接的影响
是,当向HashMap中添加元素的时候会更频繁地造成冲突,因此最终增加了耗时。但是⾃从Java 开始,这种影响不再像前
⼏个版本那样显著了,因为当冲突的发⽣超出了⼀定的限度之后,链表类的实现将会被替换成⼆叉树(binary tree)实现,这
时你仍可以得到O(logN)的开销,优于链表类的O(n)。
3、对于⼀个不可修改的类,它的每个对象是不是都必须声明成final 的
不尽然,因为你可以通过将成员声明成⾮final且private,并且不要在除了构造函数的其他地⽅来修改它。不要为它们提供
setter⽅法,同时不会通过任何函数泄露出对此成员的引⽤。需要记住的是,把对象声明成final仅仅保证了它不会被重新赋上
另外⼀个值,你仍然可以通过此引⽤来修改引⽤对象的属性。这⼀点是关键,⾯试官通常喜欢听到你强调这⼀点。
4、String的substring()⽅法内部是如何实现的
⼜⼀个Java⾯试的好问题,你应该答出“substring⽅法通过原字符串创建了⼀个新的对象”,否则你的回答肯定是不能令⼈满意
的。这个问题也经常被拿来测试应聘者对于substring()可能带来的内存泄漏风险是否有所了解。直到Java 1.7版本之
前,substring会保存⼀份原字符串的字符数组的引⽤,这意味着,如果你从1GB⼤⼩的字符串⾥截取了5个字符,⽽这5个字
符也会阻⽌那1GB内存被回收,因为这个引⽤是强引⽤。
5、你在写存储过程或者在Java⾥调⽤存储过程的时候如何来处理错误情况
这是个很棘⼿的Java⾯试题,答案也并不固定。我的答案是,写存储过程的时候⼀旦有操作失败,则⼀定要返回错误码。但
是在调⽤存储过程的时候出错的话捕捉SQLException却是唯⼀能做的。
6、Java 中新的 Lock 接⼝相对于同步代码块(synchronized block)有什么优势?如果让你实现⼀个⾼性能缓存,⽀持并发
读取和单⼀写⼊,你如何保证数据完整性。
多线程和并发编程中使⽤ lock 接⼝的最⼤优势是它为读和写提供两个单独的锁,可以让你构建⾼性能数据结构,⽐如
ConcurrentHashMap 和条件阻塞。
这道 Java 线程⾯试题越来越多见,⽽且随后的⾯试题都基于⾯试者对这道题的回答。
我强烈建议在任何 Java 多线程⾯试前都要多看看有关锁的知识,因为如今电⼦交易系统的客户端和数据交互中,锁被频繁使
⽤来构建缓存。
7、Executor.submit()和Executor.execute()这两个⽅法有什么区别
前者返回⼀个Future对象,可以通过这个对象来获得⼯作线程执⾏的结果。
当我们考察异常处理的时候,⼜会发现另外⼀个不同。当你使⽤execute提交的任务抛出异常时,此异常将会交由未捕捉异常
处理过程来处理(uncaught exception handler),当你没有显式指定⼀个异常处理器的话,默认情况下仅仅会通过
System.err打印出错误堆栈。当你⽤submit来提交⼀个任务的时候,这个任务⼀旦抛出异常(⽆论是否是运⾏时异常),那这
个异常是任务返回对象的⼀部分。对这样⼀种情形,当你调⽤Future.get()⽅法的时候,这个⽅法会重新抛出这个异常,并且
会使⽤ExecutionException进⾏包装。
、能否写⼀段⽤Java 4或5来遍历⼀个HashMap的代码
事实上,⽤Java可以有四种⽅式来遍历任何⼀个Map,⼀种是使⽤keySet()⽅法获取所有的键,然后遍历这些键,再依次通过
get()⽅法来
您可能关注的文档
最近下载
- 八年级学生数学典型错题的成因及教学对策研究.pdf VIP
- G100G150E150激光器中文用户使用指南.pdf VIP
- 《安全系统工程(第3版)》全套教学课件.pptx
- 具身智能在社会治理中的应用与挑战.docx VIP
- 北师大版九年级数学上册特殊平行四边形《单元知识梳理复习题》示范公开课教学课件.pptx VIP
- 北师大版九年级数学上册特殊平行四边形《知识梳理复习题》示范公开课教学课件.pptx VIP
- 武冷双机双级螺杆式压缩机使用说明书.pdf VIP
- 《习作:______让生活更美好》课件.pptx VIP
- 《江苏省 JGT046-2016 岩棉外墙外保温系统应用技术规程》.pdf
- 新《公司法》修订要点解读.pptx VIP
原创力文档


文档评论(0)