北京旺住科技有限公司-线下面试

北京旺住科技有限公司-线下面试

笔试:

最长不重复的字串,例如:输入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的五种数据类型

算力是指什么

算力也被看作是一种资源,对于保护和运行分布式网络是至关重要的。

#秋招##应届生##找工作##面试#
全部评论
薪资:5K~9K
1 回复 分享
发布于 2023-12-01 19:23 四川
楼主现在找到工作了吗?
点赞 回复 分享
发布于 01-03 15:49 四川

相关推荐

10-16 13:23
南昌大学 Java
群面 -- 举手抢答 体验感还是挺好的,面试官很温柔、平缓1、请做下自我简单介绍2、HashMap 的遍历方式3、对 Java 集合的操作,拿 HashMap 来说,要实现线程安全的办法4、谈到 synchronized 方法,问如何加锁(方法,代码块)5、刚刚提到 HashMap、synchronized 、ConcurrentHashMap ,这几个哪个性能最高,为什么6、线程计数器里有一个 CountDownLatch,怎么使用7、ThreadLocal 怎么使用8、数据库里按功能来分,索引有哪几种,做什么用的9、举例:有一张学生表,学校学生比较多,有几万人,查询某一个学生的成绩,需要做一些检索,根据学生编号班级去加索引,应该怎么加索引,顺序有什么区别,在学院里面查某个班级某个学生,学生有重名的这种,通过名字通过班级想要快速查到这个学生的成绩,可以通过哪些优化10、正常 update 一条数据,返回结果是多少11、Mybatis 里面常用的 resulttype 和 resultmap 做什么用的12、数据库的乐观锁和悲观锁怎么使用(举例:更新某学生成绩,有多人同时更新)13、使用 jdk 的一些 方式来实现Spring AOP ,可以通过哪些方式14、请列举会导致 Spring 本地事务失效的一些错误代码写法15、微服务分布式事务的变化,应该怎么做16、消息队列里有重复消息怎么处理17、反问 -- 结束#你都收到了哪些公司的感谢信?#
ssssssssssssssssssssp:群面是真抽象
点赞 评论 收藏
分享
3 收藏 评论
分享
牛客网
牛客企业服务