北京旺住科技有限公司-线下面试
北京旺住科技有限公司-线下面试
笔试:
最长不重复的字串,例如:输入pwwkew,输出:wke(leetCode上的题)
树的中序遍历,
sql查询最多好友,给一张数据库表,里面是自己发送添加的朋友和被添加的朋友,查询拥有最多的好友的那个人是谁,思路:自己与自己做一个连接查询(join)
技术面试:
AQS是什么?(高并发的东西)
AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock。 简单来说,AQS定义了一套框架,来实现同步类。
redis排序(zset)
Redis zset(有序集合)中的成员是有序排列的,它和 set 集合的相同之处在于,集合中的每一个成员都是字符串类型(String),并且不允许重复;而它们最大区别是,有序集合是有序的,set 是无序的,这是因为有序集合中每个成员都会关联一个 double(双精度浮点数)类型的 score (分数值),Redis 正是通过 score 实现了对集合成员的排序。
Thread类位于java.lang包,JDK1.0引入。
java线程的锁(悲观锁和乐观锁的说明)
1、悲观锁(Pessimistic Lock):对于同一个数据的并发操作,想的很坏,很悲观,都认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。别的线程想拿数据就被挡住,直到悲观锁被释放,悲观锁中的共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程。此外阻塞、唤醒以及引起的CPU状态切换等处理悲观锁的机制会产生额外的开销,还有增加产生死锁的机会,另外还会降低程序的并行性。
Java中synchronized关键字和Lock的实现类,以及数据库中的行锁、表锁、读锁(共享锁)和写锁(排他锁)都是悲观锁。
2、乐观锁(Optimistic Lock):很乐观,每次去拿数据的时候都认为别的线程不会修改。所以不会上锁,只有在想要更新数据时候,去检查在读取至更新这段时间别的线程有没有修改过这个数据。如果这个数据没有被更新,当前线程将自己修改的数据成功写入;如果数据已经被其他线程更新,则根据不同的实现方式执行不同的操作(例如报错或者自动重试)。
数据库实现乐观锁并不会使用数据库提供的锁机制。一般实现乐观锁的方式就是数据表字段增加版本号(version)或者是时间戳来实现,使用版本号是最常用的
线程与进程的区别
redis的五种数据类型
算力是指什么
算力也被看作是一种资源,对于保护和运行分布式网络是至关重要的。
#秋招##应届生##找工作##面试#