八月九号内推VIVO一面面经
第一次面试慌的一批,但是进入状态一会就好了,面试官人很好;最后还说自学学的挺好,不管结果怎样第一次体验还可以;
新鲜面经奉上
介绍一下项目;介绍一个你用心做的模块,项目流程,怎么理解异步同步,什么场景用;
static能不能被重写?
为啥?回答不能,不知道为啥;
重写方法的目的是为了多态,或者说:重写是实现多态的前提,即重写是发生在继承中且是针对非static方法的。
语法上子类允许出现和父类只有方法体不一样其他都一模一样的static方法,但是在父类引用指向子类对象时,通过父类引用调用的依然是父类的static方法,而不是子类的static方法。
即:语法上static支持重写,但是运行效果上达不到多态目的
什么情况不能用索引?
不清楚,回答了几个索引失效的情况;
1) 数据唯一性差的字段不要使用索引
比如性别,只有两种可能数据。意味着索引的二叉树级别少,多是平级。这样的二叉树查找无异于全表扫描。
2) 频繁更新的字段不要使用索引
比如logincount登录次数,频繁变化导致索引也频繁变化,增大数据库工作量,降低效率。
3) 字段不在where语句出现时不要添加索引
只有在where语句出现,mysql才会去使用索引
4) 数据量少的表不要使用索引
使用了改善也不大
另外。如果mysql估计使用全表扫描要比使用索引快,则不会使用索引。
MD5为啥要加盐(彩虹表·);UUID有多少位(32位)
synchronized为啥即有加函数,还加代码块?
粒度小;
写一个sql语句;
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
什么时候会发生死锁;怎么解决死锁;N个资源怎么办?
回答书上内容;
redis基本数据类型,分布式锁;
大体回答上了,意思到了就行;
五种结构,分布式锁几个要用到的redis命令:
setnx(key, value):“set if not exits”,若该key-value不存在,则成功加入缓存并且返回1,否则返回0。
get(key):获得key对应的value值,若不存在则返回nil。
getset(key, value):先获取key对应的value值,若不存在则返回nil,然后将旧的value更新为新的value。
expire(key, seconds):设置key-value的有效期为seconds秒。
冒泡的优化知道吗;快排的优化是啥,为啥这么做;
回答相等不交换,还有flag做已排序标志的优化;
二叉树的最大节点个数;
2^n-1;
有啥想问的;