0. 安全

  • 线程安全:fail-fast ⇒ java.util.concurrent(ArrayList是非线程安全的)

    fail-fast 机制是 java 集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。
    例如:当某一个线程A通过 iterator 去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出 ConcurrentModificationException 异常,产生 fail-fast 事件。

    private static List<String> list = new ArrayList<String>();
    private static List<String> list = new CopyOnWriteArrayList<String>();

1. 性能

  • String、StringBuffer 与 StringBuilder

    • 两个字符串相加,str1+str2,相当于执行:
    StringBuilder strBuilder1 = new StringBuilder(str1);
    strBuilder1.append(str2);
    String result = strBuilder1.toString();

    执行到最后,我们所需要的内容只有result这一个对象,中间出现的strBuilder1 就成为了垃圾回收的目标。 如果在一个循环中使用字符串的加号,导致的系统开销就是不可忽略的了。

    • 常量字符串连接(”hello” + “world”),编译器会直接帮你连上,而不是到运行时再连。效率最高;
    • 虽然 StringBuffer 是线程安全的,一般字符串相加不会有多线程操作,所以推荐使用 StringBuilder。
    • 事实上我们在java里写的字符串相加的操作被编译后都是通过new一个StringBuffer或StringBuilder对象来操作的,所以不会产生大量的String对象
  • Map 的迭代方法:entrySet 还是 keySet

    Iterate through a HashMap [duplicate]

    • 如果只关注 key, 不关心 value,keySet 为最佳
    for (String key : map.keySet()) {// ...
    }
    • 如果只关注 values,values() 最佳;
    for (Object value : map.values()) {// ...
    }
    • 如果即使用 key,又使用 value,entrySet() 为最佳;
    for (Map.Entry<String, Object> entry : map.entrySet()) {String key = entry.getKey();Object value = entry.getValue();// ...
    }

Java 经典面试题 —— 性能与安全相关推荐

  1. Java经典面试题整理及答案详解(五)

    Java经典面试题第五弹来啦!本节面试题主要是针对Java初级基础提问,看看你还记得多少? 1.String str="hello",这个字符串对象在栈内存中明明有一个引用(str ...

  2. Java经典面试题整理及答案详解(四)

    简介: Java经典面试题第四弹来啦!本节小编整理了关于Java开发框架常见的面试题,希望大家多多怜惜,一起进步- 1.SpringMVC返回值,使用SpringMVC的时候我看到两种风格的开发,一种 ...

  3. Java经典面试题整理及答案详解(三)

    简介: 以下是某同学面试时,面试官问到的问题,关于面试题答案可以参考以下内容- 上一篇:Java经典面试题整理及答案详解(二) Java面试真题第三弹接住!相信通过前两节的学习,大家对于Java多少有 ...

  4. java面试题_阿里大厂流出的数百道 Java 经典面试题

    BAT 常问的 Java基础39道常见面试题 1.八种基本数据类型的大小,以及他们的封装类 2.引用数据类型 3.Switch能否用string做参数 4.equals与==的区别 5.自动装箱,常量 ...

  5. Java经典面试题一

    转载自  Java经典面试题一 题目一 面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1.抽象: 抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽 ...

  6. Java经典面试题答案解析(1-80题)

    前言 前几天,在茫茫的互联网海洋中寻寻觅觅,把收藏的800道Java经典面试题都发出来,有小伙伴私聊我要答案.所以感觉没有答案的面试题是没有灵魂的,于是今天先整理基础篇的前80道答案出来哈~ 所有的J ...

  7. 拒绝面试造火箭,工作拧螺丝——Java经典面试题分享『带答案』

    本文转载自:拒绝"面试造火箭,工作拧螺丝"--Java经典面试题分享『带答案』 1. Java三大版本 Java2平台包括标准版(J2SE).企业版(J2EE)和微缩版(J2ME) ...

  8. Java经典面试题 带答案(五)

    Java经典面试题 带答案(五) Java 面试笔试题汇总 一.编程语言(Java)-2 二.软件工程方面-9 三.智力测试-9 四.数据库-12 五.Java框架方面 -14 六.XML方面-17 ...

  9. Java经典面试题汇总200道

    超详细的Java学习资料汇总 Java经典面试题汇总 Java 基础 1. JDK 和 JRE 有什么区别? 2. == 和 equals 的区别是什么? 3. 两个对象的 hashCode()相同, ...

最新文章

  1. 从0开始的Python学习001快速上手手册
  2. Linux 软件管理工具之rpm、yum
  3. cross-compile/交叉编译 适用于ARM的ko文件
  4. 【Git】撤销已经git add的文件
  5. 3389端口远程终端服务的全攻略
  6. 操作系统--用JavaScript实现银行家算法
  7. Pandas重复数据的查看和去重
  8. [go]---从java到go(02)---一个简单的handler模式的实现
  9. UI设计干货|从此做数据可视化页面不枯燥!
  10. 认知觉醒是成长的首因,送3本硬核认知提升书
  11. JavaScript服务器端开发(函数实参对象arguments使用的几个注意事项)
  12. docker gpu 创建 训练环境_巧用 Docker 快速部署 GPU 环境
  13. mysql数据库大小 shell_shell脚本操作mysql数据库
  14. 加密、解密、openssl的基本应用以及CA的实现过程
  15. SPASVO推出ALM(覆盖全生命周期的研发过程管理平台)免费在线体验平台
  16. 电脑常见故障排除手册(黑屏、死机、重启、蓝屏)
  17. eclipse插件下载地址
  18. android中jni的调用过程,Android 调用jni的过程简述
  19. 让更多的开发者听到您的声音,移动开发征文活动现已开始 | 开发者说·DTalk
  20. 第三章:SCI论文写作经验分享

热门文章

  1. Unity使用自定义资源(.asset)配置数据
  2. 跨平台APP----对Cordova,APPCan,DCloud,APICloud四大平台的分析
  3. vconsole在手机真机模拟器上显示console控制台
  4. 【java学习之路】(java框架)002.Git配置及使用
  5. 基于nginx搭建直播,web播放视频方案
  6. Android:沉浸式状态栏(一)工具类
  7. Python之 类属性和类方法
  8. linux tomcat守护_Linux 系统下 Tomcat 的服务配置和性能优化
  9. jmter测试jmeter参数化(必须掌握)
  10. mysql1558错误,mysql删除用户错误ERROR 1558解决办法