- 手撕代码(牛客面试,不能使用本地编辑器):
把字符串转为整数,不能使用自带的函数,字符串的第一位可能是+/-,其他位置不会出现+/-。字符串中有数字以外的符号,则返回0。
以下问题涉及 Java、数据库、JVM、操作系统,应该记了大部分。面试官还提前说了,如果遇到不了解的,可以直接说。这次面试很好的说明了说的每句话都有可能成为下个问题。
- 字符串的类型?(说到了StringBuffer是保证了线程安全,说完就意识到不对,下个问题可能会问这个,可是我不知道它是怎么保证的)
StringBuffer是如何保证线程安全的?(随便说了点自己知道的,提到了sychronized锁,然后)
锁的升级了解吗?(不知道,聊下一个话题)
说一下synchronized的底层原理?(这个真的模糊了,说的乱七八糟,然后就没深问了)
可以说一下volatile吗?(知道的相关内容全部主动说,不用等着问)
2. 集合有哪些?ArrayList的扩容机制?可以自动缩容吗?HashMap的扩容机制?如何保证线程安全?CAS会出现什么问题?有一种情况是读取了一次值是a,又读取了一次是b。又读取了一次是a,线程就以为没改变,但是实际上值改变了,怎么解决这种问题?HashMap扩容时为什么是2倍,而不是3倍?每个元素的键值要重新计算吗?ConcurrentHashMap为什么并发度高?
3. 聊一下MVCC吧?事务,有4个特性,InnoDB引擎是如何保证这4个特性的?
4. JVM包含哪些部分?说一下运行时的数据区域?垃圾回收机制?怎么判断垃圾?垃圾回收算法
5. 做的项目是前端的,为什么想做后端?想去哪个城市?(如果没说人家有的城市就有点尴尬了)
6. 最后,你有什么问题要问的?(提前想好要问的问题)