选择题
算法题
1.括号匹配问题:
给定字符串s,s只包含 '[' '{' '(' ')' '}' ']' 六种字符
判断s的是否合法。
类似这种 s="[{]}"不合法
思路:遇到左括号入栈,遇到右括号则出栈,
判断出栈的左括号,与当前的右括号是否匹配?
匹配则继续直到结束,字符串遍历完了就返回true。否则中途会返回false。
2.删除倒数第k个节点
快慢指针,找到倒数第k个节点的前一个节点pre。pre.next = pre.next.next; 最后返回head
特殊情况:假设删除的是头结点,则失效
因此我们新建一个节点使之指向头节点,当pre.next == head时,直接返回head.next即可。
问答题(个人理解回答):
1.sleep 和 wait 的区别
一个Thread的方法 一个Object的方法,
一个保持锁,一个丢弃锁
一个主动苏醒,一个等待唤醒
2.什么是垃圾内存?(不被使用的空间)
用什么办法找到他们?(引用计数,GCroot可达性分析)
GC算法?(复制,标记清除,标记整理)
常见垃圾回收器?(serial(新生代复制,老年代标记整理,单线程会等待) parallel(并发,增加了回收的效率) CMS(三次标记,标直接相连,标间接相连,标补充的引用,一次清除)G1(还没来得及看))
简单垃圾回收过程?