晚七点,上海某公司,腾讯会议
自我介绍;介绍下你的实习项目吧(电子名片,自研,具体业务;最拿手的竟然有些生疏,好歹说完了);你能说一下ArrayList和LinkedList的区别吗(Collection,List Set Deque 接口;ArrayList,LinkedList;Map;数据结构方面,动态数组,双向链表;查找效率;操作效率);你刚才提到了查询效率,这两个的查询时间复杂度是多少(O(1),O(N));你刚才提到了Map,你能说说HashMap数据结构吗(数组链表红黑树,后面就是常见的八股了);为什么存在链表结构?(插入,哈希冲突,链地址法)为什么要转换红黑树(提高查询效率);为什么不能是普通二叉树(红黑树,二叉平衡树,高度相差不过一,左小右大,效率提升);数组长度为什么是2^n(插入,冲突,扰动,&,length-1二进制高位1,分布均匀);扩容机制说一下(负载因子,二倍容量,再哈希,1.8优化,高位不为1原下标,为1下表+length);HashMap会出现线程安全问题吗(并发环境多线程操作,数据不一致);那怎么避免这种情况出现呢(线程同步,加锁,原子类,并发容器,天生线程安全,直接换用CurrentHashMap);CurrentHashMap数据结构说一下(同HashMap,1.7分段锁);CurrentHashMap怎么实现线程同步的(HashMap基础上各方法加syncronized关键字);说一下syncronized关键字(对象监视器锁);了解它的锁升级吧,为什么要这么做(1.5后优化锁升级,优化前重量级锁,悲观锁,并发量高性能差;后偏向锁,轻量级锁,重量级锁);ReetrantLock了解吧,说一下,跟syncronized关键字有啥区别(前者隐式锁,enter exit;后显式加解锁,公平非公平,可重入);公平非公平怎么实现的(公平锁,按线程抢锁顺序分配资源,原理不懂);syncronized可重入锁实现原理(计数器,+1-1);AQS知道吧,说一下(抽象队列同步器,屏蔽操作系统 封装Java层面线程同步基本操作,入队出队,抢锁释放锁挂起等待……支撑线程同步底层实现);一条查询SQL怎么排查慢查询问题(看SQL本身,明确查询字段,增加过滤条件,explain查询计划分析,索引下推,覆盖索引,减少回表;失效全表查询);听到explain很满意,又问了个慢SQL场景,减少返回字段添加过滤条件,分页查询,添加索引还是慢,为什么(这里掰扯了五分钟,边引导边聊,要减少扫描记录数);你刚才提到分库分表了,有接触过吗(实习,名片表,横向,上千条数据,id 三五张表);那段实习期间怎么工作的,主管交代的任务怎么完成(直属小组长,明确截止时间,规划工作,不会就问,多沟通交流);给你分配新的需求,怎么完成(分析诉求,Web开发,从宏观角度考量业务,再深究代码,结合自身项目经验,同事交流);快速熟悉一个完整的项目(看文档);打断,文档没有呢,或者有文档又缺失或者没写明白(找项目负责人或文档撰写人沟通,了解业务细节);明白了,给你一个具体诉求比如优化一段推送策略,怎么开展工作(现在是什么推送策略/算法,要优化成什么算法,常见的推送算法有什么 怎么实现,广泛搜罗了解学习);好的,共享屏幕做一道算法题吧(手机换电脑,共享屏幕,力扣链接,环形链表Ⅱ;七八分钟写了个大概,说清楚思路,就这样);最后一个问题,为什么从上家实习公司离职的,我看你只实习了三个月(大三,年后,专业特殊性,毕业,期末,转校,培训基地,秋招)。
一个小时,写面经就半个多小时,后续也许会有二面,二次评估,等消息。