2025面试题

136 阅读5分钟

2025面试题 1 抖音的算法走的协议是什么? 2 app脱壳的过程,脱壳工具 3 Frida用过么,怎么用 4 阿里系的sing值,验证码怎么过,cookie加密 5 验证码,瑞数,加速乐,极验 6 怎么过抖音的证书。 7 .so层的文件如何转换成高级语言的代码

  1. 你是如何逆向 Web 端的 JS 加密参数的? 步骤:

使用抓包工具捕获请求,分析加密参数。

定位生成加密参数的 JavaScript 代码。

使用动态调试工具分析加密逻辑。

提取并模拟加密算法。

  1. 你遇到过哪些加密参数类型? 类型:

签名(Signature):用于验证请求合法性。

令牌(Token):用于验证用户身份。

时间戳(Timestamp):防止重放攻击。

随机数(Nonce):增加请求唯一性。

  1. 你是如何绕过 JS 混淆的? 方法:

使用 Chrome DevTools 的 Pretty Print 功能反混淆代码。

使用 AST 解析工具(如 AST Explorer)分析代码结构。

动态调试,逐步还原逻辑。

  1. 你是如何验证加密算法的正确性的? 方法:

使用本地实现的加密函数生成参数。

与抓包结果对比,确保一致。

调试修正不一致的细节。

布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否属于一个集合。它的核心特点是:

空间效率高:相比于哈希表等数据结构,布隆过滤器使用的内存更少。

概率型判断:布隆过滤器可能会产生误判(False Positive),但不会漏判(False Negative)。

  1. 布隆过滤器的原理 1.1 数据结构 布隆过滤器由一个长度为 m 的位数组(Bit Array)和 k 个独立的哈希函数组成。

初始时,位数组的所有位都置为 0。

1.2 添加元素 将元素通过 k 个哈希函数映射到位数组的 k 个位置。

将这些位置的值置为 1。

  1. 布隆过滤器的原理是什么? 布隆过滤器通过 k 个哈希函数将元素映射到位数组的 k 个位置,查询时检查这些位置的值是否都为 1。

  2. 布隆过滤器的优缺点是什么? 优点:空间效率高、查询效率高、支持高并发。

缺点:存在误判率、不支持删除。

  1. 布隆过滤器的应用场景有哪些? 缓存穿透问题、垃圾邮件过滤、URL 去重、分布式系统等。

  2. 如何减少布隆过滤器的误判率? 增加位数组的长度 m。

增加哈希函数的数量 k。

根据元素数量 n 和误判率 p 选择合适的参数。

  1. 布隆过滤器支持删除操作吗? 标准的布隆过滤器不支持删除操作,但可以通过变种(如计数布隆过滤器)实现删除。

  2. 布隆过滤器的应用场景 缓存穿透问题:

在缓存系统中,布隆过滤器可以用于快速判断请求的数据是否存在于缓存中,避免直接查询数据库。

垃圾邮件过滤:

使用布隆过滤器判断邮件地址是否为垃圾邮件发送者。

URL 去重:

在网络爬虫中,使用布隆过滤器判断 URL 是否已经被抓取过。

分布式系统:

在分布式数据库中,使用布隆过滤器判断数据是否存在于其他节点。

  1. 多线程和多进程的区别是什么? 多线程:共享内存,资源开销小,适合 I/O 密集型任务,受 GIL 限制。

多进程:不共享内存,资源开销大,适合 CPU 密集型任务,不受 GIL 限制。

  1. 什么是 GIL?它对多线程有什么影响? GIL(Global Interpreter Lock):是 Python 解释器中的一个锁,确保同一时间只有一个线程执行 Python 字节码。

影响:GIL 限制了多线程的并行执行,特别是在 CPU 密集型任务中。

  1. 如何选择多线程还是多进程? 多线程:适合 I/O 密集型任务(如文件读写、网络请求)。

多进程:适合 CPU 密集型任务(如计算、图像处理)。

  1. 如何解决多线程的线程安全问题? 使用同步机制(如锁、信号量、条件变量)确保线程安全。

多线程:适合 I/O 密集型任务,共享内存,资源开销小,但受 GIL 限制。

多进程:适合 CPU 密集型任务,不共享内存,资源开销大,但不受 GIL 限制。

根据任务类型选择合适的并发模型,并注意线程安全和进程通信问题。

哈希计算是一种将任意长度的输入数据映射为固定长度输出(哈希值)的过程。哈希函数是哈希计算的核心工具,具有以下特点:

确定性:相同的输入总是产生相同的哈希值。

高效性:计算哈希值的时间复杂度通常为 O(1)。

抗碰撞性:很难找到两个不同的输入产生相同的哈希值。

不可逆性:从哈希值无法还原原始输入。

  1. 面试问题答案

  2. 什么是哈希函数? 哈希函数是一种将任意长度的输入映射为固定长度输出的函数,具有确定性、高效性和抗碰撞性。

  3. 哈希函数的应用场景有哪些? 数据完整性验证、密码存储、哈希表、区块链、负载均衡等。

  4. 常见的哈希函数有哪些? MD5、SHA-1、SHA-256、bcrypt 等。

  5. 什么是哈希冲突?如何解决哈希冲突? 哈希冲突:不同的输入映射到相同的哈希值。

解决方法:链地址法、开放地址法等。

  1. 如何设计一个好的哈希函数? 均匀性:哈希值应均匀分布。

高效性:计算速度快。

抗碰撞性:难以找到两个不同的输入产生相同的哈希值。

  1. 哈希表和普通数组的区别是什么? 哈希表:通过哈希函数将键映射到索引,支持快速查找、插入和删除。

普通数组:通过整数索引访问元素,查找效率较低。