性价比不要太高! 科大讯飞薪资一开

科大讯飞一面

sycronized和locked的区别?

Synchronized编码更繁难,锁机制由JVM保养,在竞争不强烈的状况下性能更好。Lock性能更弱小更灵敏,竞争强烈时性能较好。

区别如下:

hashmap put的流程

HashMap HashMap的put()方法用于向HashMap中参与键值对,当调用HashMap的put()方法时,会依照以下具体流程口头(JDK8 1.8版本):

第一步:依据要参与的键的哈希码计算在数组中的位置(索引)。

第二步:审核该位置能否为空(即没有键值对存在)

第三步:假设该位置曾经存在其余键值对,审核该位置的第一个键值对的哈希码和键能否与要参与的键值对相反?

第四步:假设第一个键值对的哈希码和键不相反,则须要遍历链表或红黑树来查找能否有相反的键:

假设键值对汇合是链表结构,从链表的头部开局一一比拟键的哈希码和equals()方法,直到找到相反的键或到达链表末尾。

假设键值对汇合是红黑树结构,在红黑树中经常使用哈希码和equals()方法启动查找。依据键的哈希码,定位到红黑树中的某个节点,而后一一比拟键,直到找到相反的键或到达红黑树末尾。

第五步:审核链表长度能否到达阈值(默以为8):

第六步:审核负载因子能否超越阈值(默以为0.75):

第七步:扩容操作:

第八步:成功参与操作。

此外,HashMap是非线程安保的,假设在多线程环境下经常使用,须要采取额外的同步措施或经常使用线程安保的ConcurrentHashMap。

avl树和红黑树的区别?

红黑树拔出的期间复杂度是多少?

红黑树平衡,拔出、删除、查找操作的期间复杂度都是O(logn)。

如何给数据库中数据加行级锁?

InnoDB 引擎是支持行级锁的,而 MyISAM 引擎并不支持行级锁。

个别的 select 语句是不会对记载加锁的,由于它属于快照读。假设要在查问时对记载加行锁,可以经常使用上方这两个模式,这种查问会加锁的语句称为锁定读。

//对读取的记载加共享锁     //对读取的记载加独占锁   

上方这两条语句必需在一个事务中,由于当事务提交了,锁就会被监禁,所以在经常使用这两条语句的时刻,要加上 begin、start transaction 或许 set autocommit = 0。

共享锁(S锁)满足读读共享,读写互斥。独占锁(X锁)满足写写互斥、读写互斥。

行级锁的类型关键有三类:

Record Lock

Record Lock 称为记载锁,锁住的是一条记载。而且记载锁是有 S 锁和 X 锁之分的:

举个例子,当一个事务口头了上方这条语句:

mysql  mysql     t_test  id    

就是对 t_test 表中主键 id 为 1 的这条记载加上 X 型的记载锁,这样其余事务就无法对这条记载启动修正了。

当事务口头 commit 后,事务环节中生成的锁都会被监禁。

Gap Lock 称为间隙锁,只存在于可重复读隔离级别,目标是为了处置可重复读隔离级别下幻读的现象。

假定,表中有一个范围 id 为(3,5)间隙锁,那么其余事务就无法拔出 id = 4 这条记载了,这样就有效的防止幻读现象的出现。

间隙锁只管存在 X 型间隙锁和 S 型间隙锁,然而并没有什么区别,间隙锁之间是兼容的,即两个事务可以同时持有蕴含独特间隙范围的间隙锁,并不存在互斥相关,由于间隙锁的目标是防止拔出幻影记载而提出的。

Next-Key Lock

Next-Key Lock 称为临键锁,是 Record Lock + Gap Lock 的组合,锁定一个范围,并且锁定记载自身。

假定,表中有一个范围 id 为(3,5] 的 next-key lock,那么其余事务即不能拔出 id = 4 记载,也不能修正 id = 5 这条记载。

所以,next-key lock 即能包全该记载,又能阻止其余事务将新纪录拔出到被包全记载前面的间隙中。

next-key lock 是蕴含间隙锁+记载锁的,假设一个事务失掉了 X 型的 next-key lock,那么另外一个事务在失掉相反范围的 X 型的 next-key lock 时,是会被阻塞的。

比如,一个事务持有了范围为 (1, 10] 的 X 型的 next-key lock,那么另外一个事务在失掉相反范围的 X 型的 next-key lock 时,就会被阻塞。

只管相反范围的间隙锁是多个事务相互兼容的,但关于记载锁,咱们是要思考 X 型与 S 型相关,X 型的记载锁与 X 型的记载锁是抵触的。

假设和redis无法衔接,如何排查要素?

假设redis内存无余,你以为是什么要素

为什么 redis购物车用hash不用 string

经常使用 Hash 类型来成功购物车有几个清楚的长处,相比经常使用 String 类型:

讲一下Nginx的负载平衡战略

Nginx支持的负载平衡算法包括:

linux 命令怎样看 cpu 占用率?

可以经过 top 命令来检查系统的 cpu 占用率和各个进程的 cpu 占用率。

死锁的时刻cpu应用率是高还是低?为什么?

这个关键是看用了什么锁:

linux 命令怎样看进程占用的端口?

可以经过 lsof 或许 netstate 命令检查,比如检查 80 端口。

root COMMANDPIDFDDEVICE SIZE NODE NAMEnginxrootuIPv4t0TCP :http LISTENnginxrootuIPv6t0TCP :http LISTENnginx nginxuIPv4t0TCP :http LISTENnginx nginxuIPv6t0TCP :http LISTENAliYunDun rootuIPv4 t0TCP xiaolin::http ESTABLISHED
root tcp ::LISTENnginx: master p

您可能还会对下面的文章感兴趣: