字节跳动视频架构(一面面经)
算法:判断是否有环
leetcode141
面试开始先做一道题,很简单
java基础
String StringBuilder StringBuffer
String 安全 不可更改
StringBuffer 直接在字符串上更改,线程安全
StringBuilder 直接在字符串上更改,线程不安全
(ps:今天新面试一个公司问了String底层原理,及问什么不能更改,所以String应该深入了解一下深入理解Java中的String(大坑))
hashmap
介绍hashmap,hashmap3种解决冲突的方式,这里只答出来链表散列,还有开放定址法(线性探测再散列,平方探测再散列),在hash法。
这里我只说了线性探测,集体其他方法没说清,同样今天面试问到了hashmap存入元素的底层原理,所以hashmap处理冲突及过程要了解~
jvm,多线程
jvm各个部分介绍
我忘记怎么就到了jvm的内容,开始介绍jvm内存结构
threadlocal
面试官问如何在线程共享部分存储自己线程的私有信息,开始没想到threadlocal,提醒之后想到了
threadlocal底层threadlocalMap,在这边我提了key为弱引用,记住用完要及时移除Key=null的值 remove()方法。
各个引用过程(强软弱虚)
应该是我每次遇到threadlocal都会引导面试官问四种引用类型。
强引用:直接new对象,有地址
软引用:内存满,回收
弱引用;垃圾回收器看到就清理
虚引用:虚引用与引用队列联合使用,跟踪垃圾回收活动
乐观锁/悲观锁/锁升级
cas
synchronized
无锁-偏向锁-轻量级锁-重量级