各地
资讯
当前位置: 考呗网 > 教师资格 > 面试指导 >

面试内容(最新发布)(11)

蚂蚁考呗网     [ 2020-09-06 ]   点击次数:

(26)分布式锁
1.数据库实现分布锁:两种方式都是依赖数据库的一张表,一种是通过表中的记录的存在情况确定当前是否有锁存在,另外一种是通过数据库的排他锁来实现分布式锁。
1)基于数据库排他锁实现分布式的锁:基于MySql的InnoDB引擎,在查询语句后面增加forupdate,数据库会在查询过程中给数据库表增加排他锁,InnoDB引擎在加锁的时候,只有通过索引进行检索的时候才会使用行级锁,否则会使用表级锁。
2)基于数据库表:要实现分布式锁,最简单的方式可能就是直接创建一张锁表,然后通过操作该表中的数据来实现了。当我们要锁住某个方法或资源时,我们就在该表中增加一条记录,想要释放锁的时候就删除这条记录。
2.基于缓存实现分布式锁
使用缓存来代替数据库来实现分布式锁,这个可以提供更好的性能,同时,很多缓存服务都是集群部署的,可以避免单点问题。并且很多缓存服务都提供了可以用来实现分布式锁的方法,比如Tair的put方法,redis的setnx方法等。并且,这些缓存服务也都提供了对数据的过期自动删除的支持,可以直接设置超时时间来控制锁的释放。
3.基于Zookeeper实现分布式锁:基于zookeeper临时有序节点可以实现的分布式锁。
每个客户端对某个方法加锁时,在zookeeper上的与该方法对应的指定节点的目录下,生成一个唯一的瞬时有序节点。判断是否获取锁的方式很简单,只需要判断有序节点中序号最小的一个。 当释放锁的时候,只需将这个瞬时节点删除即可。同时,其可以避免服务宕机导致的锁无法释放,而产生的死锁问题。
(27)什么是死锁?如何避免死锁?
死锁是指两个以上的线程永远阻塞的情况,这种情况产生至少需要两个以上的线程和两个以上的资源。
1.加锁顺序
2.加锁时限
3.死锁检测,它是一种更好的死锁预防机制。
(28)常见的数据结构和算法:
1.数据结构:
1)线性表:向量(vector)、列表(list)等顺序容器
2)栈、队列和串:
栈:后进先出
队列:它只允许在一端插入,另一端删除 串:串也称字符串,是由字符构成的有限序列。串中任意个连续字符构成的串称为子串,原串称为主串。前缀子串指第一个字符到某个字符构成的子串,后缀子串是某个字符到最后一个字符构成的子串。
3)树(二叉树、红黑树等):
①二叉树遍历
先序遍历:遍历顺序规则为【根左右】
中序遍历:遍历顺序规则为【左根右】
后序遍历:遍历顺序规则为【左右根】
4)数组:
5)图:
2.算法:
1)二分查找
2)冒泡排序
3)选择排序

(29)常见的运行时异常跟编译时异常
1.ClassNotFoundException、NullPointerException、IllegalArgumentException、UnkownTypeException
2.编译异常:IOException、SQLException等以及用户自定义的Exception异常

评论责编::admin
相关推荐
热点推荐»