Java面试题(7)- 线程安全
整理一些Java基础面试题,内容涵盖语言基础、并发、JVM、IO模型、中间件、开发框架等等。本章节的面试题有:说说如何保证线程安全;如何实现一个线程安全的数据结构;volatile关键字的作用是什么;Java并发包提供了哪些并发类;HashMap在多线程环境下使用需要注意什么,为什么;ThreadLocal的作用与实现原理是什么;ThreadPoolExecutor的实现原理是什么;什么是死锁,如何避免死锁;Atomiclnteger的实现原理是什么。
整理一些Java基础面试题,内容涵盖语言基础、并发、JVM、IO模型、中间件、开发框架等等。本章节的面试题有:说说如何保证线程安全;如何实现一个线程安全的数据结构;volatile关键字的作用是什么;Java并发包提供了哪些并发类;HashMap在多线程环境下使用需要注意什么,为什么;ThreadLocal的作用与实现原理是什么;ThreadPoolExecutor的实现原理是什么;什么是死锁,如何避免死锁;Atomiclnteger的实现原理是什么。
大学时期,我首次使用了Mybase管理笔记和文档。Mybase的界面有点古板,但是功能异常强大。它的缺点也显而易见,没有移动客户端,无法在多平台同步数据。七八年前,我开始使用Evernote(本土化后叫做印象笔记),客户端UI很美观,但是整体响应有点慢,免费用户的空间也很小。后来朋友向我推荐了有道云笔记,它是国内的产品,界面很清爽,同步数据也很快,一直使用至今。国内知名的笔记软件还有语雀、为知笔记等等,这些产品固然做的很好,但是无法解决让我忧心忡忡的问题:数据安全。没有任何一家公司敢保证决不泄露客户数据,要么是被黑客窃取数据,要么被公司内鬼盗卖数据,这些案例比比皆是。随着我的笔记数量越来越多,有一些隐私数据也放在云笔记上。有道云笔记绝不可能让用户自行存储数据,我必须寻找新的产品来解决数据安全问题。
两步验证,是指用户登录账户的时候,除了要输入用户名和密码,还要求用户输入一个动态密码,为帐户添加了一层额外保护。这个动态密码要么是专门的硬件,要么由用户手机APP提供。即使入侵者窃取了用户密码,也会因不能使用用户手机而无法登录帐户。