作者:Carson-Zhao
链接:https://ac.nowcoder.com/discuss/522002?type=2&order=0&pos=16&page=1&ncTraceId=&channel=-1&source_id=discuss_tag_nctrack
来源:牛客网
总结一下这几天的面试吧!从19号到现在23号总共笔/面了,长亮科技(offer)、荔枝FM(在确定部门和薪资)、涂鸦智能(第一轮电话面半小时,待后续)、华资软件(HR面)、广州速游(已挂)。至于公司怎么样不加以言论。可能有些题想不起来,但是回答了的问题,没标注不会的,回答的应该还行,马马虎虎,需要了解的私信也可以。
长亮:
实习项目
不知道问什么,一般是先收集信息,表示对象和属性,表示对象的对应关系,花e-r图
更具e-r图创表
视图就是select查询语句创建的一个虚拟存在的表,
ArrayList是基于数组实现的,它使用索引在数组中搜索和读取数据是很快的‘
LinkedList是基于双链表实现的。删除、插入元素较快。
ArrayList 只能用作列表;LinkedList 可以用作列表或者队列,因为它还实现了 Deque 接口。
put过程不清楚
存null,强制了链表第0位置为null
太难了,讲源码
可达性分析、或引用计数法,找到失效对象,一般使用复制算法,复制进入幸存区,
重复(15)多次,进入老年代,老年代一般使用,标记清除压缩算法
String字符串/hash哈希/list链表/set无序集合/zset(有序集合)
set 对外提供的功能与list类似是一个列表的功能,特殊之处在于 set 是可以自动排重的。
依次用于
粉丝数/用户信息/粉丝列表/共同粉丝/弹幕消息
多个索引
redis重启后数据丢失
1.如果你把redis的持久化做好,备份和恢复方案做到企业级的程度,那么即时你的redis故障了,也可以通过备份数据,快速恢复,一旦恢复,就可以立即对外提供服务.
2.如果做了主从复制和哨兵,监听哨兵返回错误使用附属redis顶替宕机的redis
RDB持久化机制,对redis中的数据执行周期性的持久化,每隔几分钟,几小时,几天,生成redis内存中的数据的一份完整的快照
AOF持久化机制,对每条写入命令作为日志,以append-only(追加)的模式写入一个日志文件中,在redis重启的时候,可以通过回放AOF日志中的写入指令来重新构建整个数据集,
不知道
不知道
将域名解析成ip,tcp三次握手建立连接,发送http请求,服务器处理请求返回报文,浏览器解析页面,tcp四次挥手。
tail -f xx.log
共同使用kernel内核,各个应用和环境相互隔离。
前面文章多次赘述,这里就不废话了
https://blog.csdn.net/weixin_50224527/article/details/120501023
荔枝:
treemap继承了sortedmap默认升序排列,
abstractmap继承了treemap,hashmap继承了abstractmap
大端存储:将变量的最高有效位存储在地址的高位,最低有效位存储在地址的低位;
小端存储:将变量的最高有效位存储在地址的低位,最低有效位存储在地址的高位;
引用计数器为0,可达性分析联通
头部是4个比特位,1111,最大15
主从复制,持久化写文件,保持内存快照
定期删除,redis默认每个100ms检查,是否有过期的key,有过期key则删除。需要说明的是,redis不是每个100ms将所有的key检查一次,而是随机抽取进行检查(如果每隔100ms,全部key进行检查,redis岂不是卡死)。因此,如果只采用定期删除策略,会导致很多key到时间没有删除。
于是,惰性删除派上用场。也就是说在你获取某个key的时候,redis会检查一下,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除。
join 方法
不会
无
无
(1)corePoolSize:线程池中的常驻核心线程数。
(2)maximumPoolSize:线程池能够容纳同时执行的最大线程数,此值大于等于1。
(3)keepAliveTime:多余的空闲线程存活时间,当空间时间达到keepAliveTime值时,多余的线程会被销毁直到只剩下corePoolSize个线程为止。
(4)unit:keepAliveTime的单位。(H/min/s)
(5)workQueue:任务队列,被提交但尚未被执行的任务。
(6)threadFactory:表示生成线程池中工作线程的线程工厂,用户创建新线程,一般用默认即可。
(7)handler:拒绝策略,表示当线程队列满了并且工作线程大于等于线程池的最大显示数(maxnumPoolSize)时如何来拒绝请求执行的runnable的策略。
1.使用maven依赖分析 mvn dependency:tree
2.父类锁定版本
涂鸦智能:
Spring循环依赖的理论依据其实是Java基于引用传递
,当我们获取到对象的引用时
,对象的field或者或属性是可以延后设置
的。
Spring单例对象的初始化其实可以分为三步:(实例化、填充属性、初始化)
所以在“A的某个field或者setter依赖了B的实例对象,同时B的某个field或者setter依赖了A的实例对象”这种循环依赖的情况。
a暴露自己在三次缓存,singletonFactories中,依赖b,创建b,b在三次缓存获取a对象完成初始化放入到一级缓存singletonObjects
,a根据b填充属性,。完成初始化,放入到一级缓存singletonObjects
不懂
aqs有一个state变量,线程获取锁status++,释放锁 –
非公平锁实现:
C直接尝试对这个status CAS(0,1)操作,并成功改变了status的值,B线程获取锁失败,再次挂起,这就是非公平锁,B在C之前尝试获取锁,而最终是C抢到了锁。
公平锁:
C发现有线程在等待队列,直接将自己进入等待队列并挂起,B获取锁
乐观锁是一种思想,CAS只是这种思想的一种实现方式。
简单来说,HTTPS是使用TLS/SSL加密的HTTP协议
HTTPS需要使用ca申请证书
传输协议上, HTTP是超文本传输协议,明文传输;HTTPS是具有安全性的 SSL 加密传输协议
连接方式与端口上,http的连接简单,是无状态的,端口是 80; https 在http的基础上使用了ssl协议进行加密传输,端口是 443
域名解析ip,三握手,发送请求,处理请求返回数据报,浏览器解析渲染页面,四挥手
保证双发都能收发数据,双工通信。
常用操作
MySQL聚簇索引和非聚簇索引区别
解释什么是覆盖索引
问了cloud的熔断器Hystrix原理(没答上来)
不懂
rdb定期存储一次,存入redis内存快照,可能导致没存数据丢失。
aof,把写操作写入日志,数据丢失时,根据日志恢复数据。
华资软件:
针对容器最基本的知识、以及简单排序出了一些题目(不太想列举了)
以下内容需要较强的实现的能力,自己看吧
广州速游:
Linux简单命令
手写单例、二分查找、设计定时器、SQL全、内、左连、右连
容器知识
字符串去重
遍历二叉树
知中后序求前
设计游戏例子算法
如何设计一个数据库,怎么设计索引
速游挂了,五十分钟,题目没写完
这基本上就是这几天面试的一个技术篇总结吧!大概就这样!