100天准备找工作倒计时:第五天

明天上午有海康威视的面试,所以今天基本是看着面经学的,感觉问多线程很多😅很慌,晚上还有去哪儿和广联达的笔试,一路写到11点半,明天直接拉满了


算法题:
1.监控二叉树(力扣每日一题)(我发现二叉树的题很容易和前中后序结合在一起):设置三种状态:0(未被监控),1(已被监控),2(设置监控器);从下往上判断,根据左右子结点的情况来决定当前结点的返回值,并设置一个变量sum用来记录当前监控数量,还是利用递归,从根节点开始递归到叶子节点再返回最终结果;

面试题(多线程为主):
1.多线程安全问题如何解决:synchronized关键字,同步代码块,同步锁;
2.thread中run和start的区别
3.进程和线程的区别(复习)
4.如何处理线程返回值:主线程等待法、join方法阻塞当前线程等待子线程处理完毕、实现callable接口通过futrue task获取
5.sleep和wait的区别:s是thread的方法,w是object的方法;s可以在任何地方使用,w只能在同步方法或者同步代码块中使用;sleep不释放锁,wait释放锁;
6.等待池和锁池的区别:当线程调用wait方法释放锁后会进入等待池,不参加锁的竞争,而等待池是等待获取锁的线程进入
7.Notify和Notify All的区别:N是随机唤醒一个等待池中的线程进入锁池,N A是让等待池中的所有线程都进入锁池;
8.yield方法:该方***给线程调度器一个当前线程愿意让出cpu使用的暗示,但是线程调度器可能会忽略这个暗示;
9.如何中断线程:.stop方法已经被废弃了,现在使用.interrupt方***设置中断标志位为true,然后线程继续正常运行,线程在正常运行过程中会经常检查该标志位,发现设置为true后就会自动中断线程;
10.volatile:保持内存可见性和代码有序性
11.CAS是什么:compare and swap,内存中取出值后会和预期值进行对比,如果符合的话就执行目标操作,不符合就重复执行对比操作;
12.ABA问题:其他线程将预期值A改为B又改回A,我们对比发现和预期值一样,但其实已经有过修改操作;
13.ArrayList不安全,解决办法:使用vector;Collections.synchronizedList(new ArrayList());使用copyOnWriteList;
14.Synchronized和Lock的区别:lock是个接口,synchronized是个关键字; synchronized在发生异常时会释放锁因此不会导致死锁,lock如果发生异常没有主动去unlock就很有可能造成死锁;lock可以让等锁的线程响应中断,synchronized不可以,只会一直等待下去;lock可以知道是否获取到锁,synchronized不可以;lock可以提高多个线程读操作的效率;synchronized的锁可重入、不可中断、非公平,而Lock锁可重入、可判断、可公平(两者皆可);lock可以设置响应时间,如果超过响应时间还没有获取到锁的话可以停止获取锁并响应放弃操作;synchronized放弃锁只有两种可能,代码执行完或者遇到异常;
15.锁的类型(这个还是不太明白正确答案该怎么说)
16.锁升级机制:偏向锁-轻量级锁-自旋锁-重量级锁
17.CountDownLatch、CyclicBarrier(栅栏)、Semaphore(信号量)
18.线程池如何使用:自带的工具类Executor(newFixedThreadPool()创建指定长度的线程池newSingleThreadExecutor()创建一个单个线程的线程池newCachedThreadPool()创建一个可缓存线程池;);自定义线程池ThreadPoolExecutor(七个重要参数:corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler);
19.线程池的线程数设置策略:CPU密集型:线程数=cpu核数+1;IO密集型:线城市=2倍cpu核数
20.AOP的实现原理(超长超多,背不下来)
21.AOP的实现方式:基于xml,基于注解;
22.AOP的两种代理方式:java动态代理(proxy和handler,反射创建实例代理类动态编制业务逻辑和横切逻辑)和CGLIB代理(底层字节码技术,创建子类并拦截父类的方法调用并顺势织入横切逻辑)
23.Mysql调优思路(一大堆,记了几个):设置合适的字段类型;连接代替子查询(避免创建临时表);UNION代替手动创建临时表;使用事务;使用外键保证关联性;使用索引;

海康威视的面经没找到多少合适的,明天的面试心里慌得不行,如果真的很难就当锻炼自己了🤐
(就在我刚刚码字的时候收到了又一家公司的线下面试通知,我崩溃了😣)



全部评论
楼主加油!!
点赞 回复 分享
发布于 2020-09-23 17:03
我之前面试遇到 ABA问题可能会带来什么问题?
点赞 回复 分享
发布于 2020-09-23 16:25
第5条sleep释放锁,wait不释放锁;这句话应该说反了吧,不应该是sleep不释放锁,wait释放锁吗
点赞 回复 分享
发布于 2020-09-23 16:17
1、多线程安全解决方法,可以加一个volatile关键字
点赞 回复 分享
发布于 2020-09-23 09:50
咦,这个排版好像周阳老师讲的那些题目
点赞 回复 分享
发布于 2020-09-23 08:41
羡慕有这么多面试可以锻炼的
点赞 回复 分享
发布于 2020-09-23 01:10

相关推荐

04-02 17:22
新疆大学 Java
1. 你在这个物流平台项目中扮演的角色是什么?主要负责后端的哪一部分?2. 能简单介绍一下你负责的核心模块(货单大厅)的业务流程吗?3. 货单大厅里高频使用的多条件组合查询,你后端的存储用的是什么?4. 这个查询对应的数据量有多大?5. 除了 MySQL,你有考虑过用别的存储引擎做这种多条件检索吗?有没有必要?如果要换,应该用什么来做?6. 简历上写了 SQL 优化,整个问题是怎么发现,然后怎么解决的?7. 什么是回表?8. 你用 EXPLAIN 发现查询慢,具体是因为没有用索引,还是索引没用对?9. 联合索引的“最左匹配原则”知道吗?具体是什么意思?10. “迷你豆包”这个项目是干什么用的?主要是出于什么考虑要做这个项目?11. 能简单介绍一下这个项目中你觉得比较感兴趣的技术点吗?12. 进程和线程的区别是什么?13. 进程的上下文切换和线程的上下文切换是怎么做的?包含了哪些步骤?14. 什么是虚拟内存?使用虚拟内存有什么好处?15. 缺页中断(Page Fault)是什么意思?16. 操作系统里面有哪些锁?(或 Java 里面有哪些锁?)17. 如果 synchronized 和 ReentrantLock(可重入锁)两个选的话,优先选哪个?为什么?18. 正常情况下(单体服务中),默认应该优先选哪个锁?19. 知道 BIO、NIO、AIO 吗?BIO 的“同步阻塞”是什么意思?20. 简单介绍一下 TCP 的三次握手和四次挥手过程。21. 为什么 TCP 建立连接需要三次握手?22. TIME_WAIT 状态出现在四次挥手的什么时候?23. TIME_WAIT 状态会持续多长时间?24. HTTP 状态码 404(找不到页面)代表什么?这是服务端的问题还是客户端的问题?25. HTTP 状态码 504 一般出现在什么情况下?26. 在浏览器里面输入一个网址,到页面最终展示出来,这中间经历了怎样的过程?27. 什么是 TCP 的粘包和拆包?28. 怎么解决粘包和拆包的问题?29. MySQL InnoDB 引擎的索引使用的是什么树结构?B+树和B树的区别是什么?30. 为什么 MySQL 采用 B+树,而不用红黑树?31. 听说过幻读吗?解释一下什么是幻读。32. 怎么解决幻读问题?33. 幻读在什么隔离级别下可以解决?34. 一般怎么解决 Redis 缓存与 MySQL 数据库的缓存一致性问题?35. JVM 的内存模型(运行时数据区)包括哪些部分?36. 字符串(String)和数字在 JVM 中分别存放在哪里?37. 垃圾回收(GC)算法有哪些?38. CMS 和 G1 垃圾回收器的区别是什么?它们分别应对什么场景?39. 为什么到了 JDK 1.8 之后开始主流推荐使用 G1?CMS 有什么缺点?40. 相比之下,CMS 和 G1 谁的 GC 停顿时间会更长?为什么?41. HashMap 和 ConcurrentHashMap 的区别是什么?42. ConcurrentHashMap 是怎么做到线程安全的?43. 简单介绍一下 Spring 的控制反转(IOC)和面向切面编程(AOP)。44. AOP 的核心底层是使用什么机制实现的?45. 我们平时写个注解就能生效,注解的基本原理是什么?它为什么能把逻辑织入到代码运行路径中?46. 你平时是怎么使用 AI 辅助开发的?你的项目代码是直接用 AI 写的吗?47. RAG(检索增强生成)的一个完整运行流程是怎样的?48. 为什么要做 RAG 这个东西?它解决了什么问题?49. Token 和上下文窗口(Context Window)的概念分别是什么意思?50. 为什么要控制 Token 的数量?51. 大模型的“幻觉”是什么意思?是怎么产生的?
面试问题记录
点赞 评论 收藏
分享
评论
10
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务