3月10号-3月16号笔记三合一+两篇面经

news/2025/3/28 6:41:26/文章来源:https://www.cnblogs.com/vastjoy/p/18784789

2025.3.10 学习

八股

blocked和waiting有啥区别

触发条件:线程进入BLOCKED状态通常是因为试图获取一个对象的锁(monitor lock),但该锁已经被另一个线程持有。这通常发生在尝试进入synchronized块或方法时,如果锁已被占用,则线程将被阻塞直到锁可用。线程进入WAITING状态是因为它正在等待另一个线程执行某些操作,例如调用Object.wait()方法、Thread.join()方法或LockSupport.park()方法。在这种状态下,线程将不会消耗CPU资源,并且不会参与锁的竞争。

唤醒机制:当一个线程被阻塞等待锁时,一旦锁被释放,线程将有机会重新尝试获取锁。如果锁此时未被其他线程获取,那么线程可以从BLOCKED状态变为RUNNABLE状态。线程在WAITING状态中需要被显式唤醒。例如,如果线程调用了Object.wait(),那么它必须等待另一个线程调用同一对象上的Object.notify()或Object.notifyAll()方法才能被唤醒。

线程的三种创建方法:

1.继承Thread类并重写run方法

2.实现Runnable接口并实现run方法,然后用

Thread t1= new Thread(new MyRunnable);

的方法创建

3.实现Callable接口与FutureTask

   class MyCallable implements Callable<Integer> {@Overridepublic Integer call() throws Exception {// 线程执行的代码,这里返回一个整型结果return 1;}
}public static void main(String[] args) {MyCallable task = new MyCallable();FutureTask<Integer> futureTask = new FutureTask<>(task);Thread t = new Thread(futureTask);t.start();try {Integer result = futureTask.get();  // 获取线程执行结果System.out.println("Result: " + result);
} catch (InterruptedException | ExecutionException e) {e.printStackTrace();
}
}

wait和sleep的区别

wait使线程进入waiting状态,需要等待其他的线程调用notify或者notifyall唤醒。

sleep使线程让出cpu的使用权,进入 timed_waiting状态

java中线程的状态

new

Runnable

Waiting

Timed_Waiting

Blocked:尝试进入Syncronized代码块但没有获取到监管者锁

TERMINATED:运行结束

img

2025.3.11 学习

函数式接口

只有一个函数的接口就是函数式接口

匿名内部类

看以下两个例子:

​ 方法一

image-20250311170842590

观察这两种创建新线程的方法,可以看到方法一是用传统的方式,先创建一个继承了Thread类的新的类,然后再new一个该类的对象。而方法二用了匿名内部类的方式,本质上也创建了一个继承Thread的新类,但是这个类没有名字,直接被用于new对象了。

方法三:

public class ThreadStudy{void function1{Thread t1=(()->{...});}
}

用的是Lambda表达式,是因为Thread本身有一个构造函数是

image-20250311171124347

而Runnable是一个接口

image-20250311171148532

可以看到这个接口只有一个函数(所以是函数式接口)

不过现在有一个问题,那就是使用lambda表达式时,编译时怎么判断Thread调用的是哪个构造函数呢?Thread 类有一个单参数的构造函数 public Thread(Runnable target),它接受一个 Runnable 类型的参数。Lambda 表达式 () -> { ... } 的函数签名与 Runnable 接口的 run() 方法完全匹配(意思是函数参数都是空,都没有返回值),因此编译器会自动将 Lambda 表达式推断为实现 Runnable 接口,并匹配到 Thread 的单参数构造函数。

微信支付一面 3.12 已挂

1.自我介绍

2.项目讲一讲

3.实习讲一讲

4.模型微调咋做的

5.jsonL文件可能有多大?

6.大文件怎么解决呢?

这里我说是放到oss里

7.你觉得主要难点是什么

(毫无并发的功能,我只能说逻辑上比较复杂了啊,有没有高手知道这种问题怎么聊的好一点)

8.说一说你理解的mysql,redis,rocketMQ之间的区别

9.你部署过项目对吧,说一说怎么部署的

腾讯云+宝塔linux,nginx反向代理解决跨域,数据库也上云

10.redis分布式锁咋实现的

11.手撕

判断完全二叉树

反转链表

总共60min,第一题怎么构造输入啊?这种是要我自己构造个前序遍历和中序遍历的输入,然后把树读进来,读完再判断,是这意思吗,现场没做出来。第二天挂,发了感谢信

牵手app一面 3.19

1.自我介绍

2.说一说自己做过的项目有什么难点

3.说一说三次握手和四次挥手的过程

4.解除连接过程能不能三次挥手?

可以的,被动解除方没有数据包要传输,并且开启了延迟确认机制

5.vue双向绑定原理?

6.缓存三兄弟

7.怎么解决,redis持久化机制

8.mysql什么时候建索引

9.可以随便建吗

10.分析器什么时候选择走索引

11.什么时候索引失效

12.mysql事务隔离级别

13.解决了什么问题

14.说一说实习和项目中哪些用到ai相关的?

实习做了点模型微调,项目里调过api做了个ai智能问答网站

15.反问

40分钟,没有手撕,第二天过了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/902383.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dicom纯js的三维重建影像浏览器

主要功能介绍 实现通过浏览器浏览Dicom影像阅片。主要功能:支持标准DIcom影像的2D浏览,预设窗位,伪彩,序列间,序列内多种布局方式。 影像处理,提供影像翻图、缩放、移动、透镜、反相、旋转、截图等操作 影像测量,提供箭头、直线、十字架、角度、Cobb、心胸比、椭圆、矩形…

电子签借贷真实吗?315报道引发的行业地震!电子签到底冤不冤?

看了315的相关报道后,曝光套路贷本来是正向的,却将电子签和高利贷混为一谈。这种无意识的混淆不仅会误导大众,也不利于新兴技术的健康发展。电子签作为一种替代纸质合同签署的新兴技术,有着独特的优势和重要的意义。在过去,不同主体之间签订合同往往需要面对面进行签署,这…

C#反编译

偶遇C#逆向题,IDA拼尽全力无法战胜,只给我一团乱码。 这时可以使用dnSpy来反编译: https://github.com/dnSpy/dnSpy/releases/tag/v6.1.8 1.dnSpy使用方法: 将你要反编译的程序的整个文件夹拖到那里,似乎只有.dll那里才能看到源码, 例题:https://www.nssctf.cn/problem/3…

Windows11跳过Microsoft账户登录方法

新版Win11默认必须联网并且使用Microsoft账户登录,不然不能进去系统,以下是不联网进入方法1、在开机出现登录界面时,按下Ctrl+Shift+F3快捷键,然后系统会自动重启,重启 后会出现一个不需要登录Microsoft账户的启动界面,直接进入Windows11系统,系统中会弹窗,点确定。 2、…

android studio 真机wifi调试经验汇总

--------------- 2025/03/11 真机连接连不上wifi调试可能的原因: 1.手机没有开启开发者模式 2.手机没有开启usb调试以及wifi调试 3.手机应该改为传输文件模式 4.手机和电脑应该连接同一个wifi 5.在电脑cmd窗口输入adb connect ip:port(前提电脑需要配好adb环境)adb连接手机教…

广度优先搜索(BFS)走迷宫:

广度优先搜索(BFS)走迷宫: 广度优先搜索(BFS)是一种经典的图遍历算法,在解决路径查找、迷宫问题、拓扑排序等问题 前置知识:队列: 队列与栈类似,但是先进先出,而不是栈的先进后出。 原理: 相当于爆破,将所有的位置都走一遍 通用迷宫代码实现: #include <iostre…

TEA与XTEA算法:

TEA算法使用64位的明文分组和128位的密钥,它使用Feistel分组加密框架,需要进行 64 轮迭代,尽管作者认为 32 轮已经足够了。该算法使用了一个神秘常数δ作为倍数,它来源于黄金比率,以保证每一轮加密都不相同。但δ的精确值似乎并不重要,这里 TEA 把它定义为 δ=「(√5 - 1…

ui中的控件stackwidget如何拖拽添加widget

QStackedWidget界面的操作步骤-百度经验

UPX加壳原理,加壳及去壳:

加壳: 先写一个简单的代码:生成text.exe文件,然后把这个文件放到与upx同一个文件夹里: 输入指令./upx text.exe 即可加壳 使用IDA打开,可以明显发现被upx加壳了,其大小也由原来的55kb压缩到42KB: 去壳: 工具去壳: 使用指令./upx -d text.exe即可脱壳大小也变回去了,用…

vscode remote ssh内存异常占用高问题

参考:https://blog.csdn.net/sigmarising/article/details/107615035 点开设置搜索search.follow。在用户/远程/工作区都取消勾选Follow Symlinks,如图所示。

Hook(钩子技术)

一.介绍 1.当代码执行到某行时,获取寄存器值和内存里的值,进行调试分析,例如hook明文包. 2.当代码执行到某行时,插入想执行的代码.例如迅雷拦截发包函数. 3.当代码执行到某行时,修改寄存器,达到某些篡改目的. 拿FishingKit这道题举例就是本来运行流程是: a--->b 而使用了H…

2024年1月Java项目开发指南20:windows下使用Nignx部署应用

命令 启动start nginx重新加载配置文件 nginx -s reload nginx -t修改配置后执行上面两个语句下载地址 https://nginx.org/en/download.html 部署Vue项目 1 打包Vue项目 得到dist文件件 2 启动Nginx,访问localhost 注意:Nginx需要占用80端口。 启动后访问localhost,成功后如…