快手外包一面复盘:算法、Java 锁、线程池、Redis 与 MySQL
这篇文章整理一次快手外包 Java 一面的面试记录。整体难度不算偏,但覆盖面比较典型:两道基础算法题,加上一串 Java 后端八股,包括锁、线程池、Redis 持久化、MySQL 索引和 explain。 如果是准备 Java 后端一面,这份题单很适合当作一次查漏补缺。 面试题目算法 无重复字符的最长子串 反转链表 Java 八股 Java 里的锁有哪些?区别是什么? ReentrantLock 的加锁过程是什么? synchronized 锁升级过程 线程池核心参数有哪些?拒绝策略有哪些? Redis 备份策略 AOF 的三个刷盘级别 MySQL 索引类型、索引失效、explain 最左匹配原则 算法一:无重复字符的最长子串题目要求:给定一个字符串,找出其中不含重复字符的最长子串长度。 典型做法是滑动窗口。用两个指针维护一个窗口 [left, right],窗口内保证没有重复字符。遍历右指针,如果当前字符上一次出现的位置在窗口内,就把左指针移动到重复字符的后一位。 123456789101112131415161718192021import java.util.Has...
Java 8升级到Java 17:全面升级指南(含JVM/GC优化)
引言Java 8到Java 17的升级是企业级应用现代化的重要步骤。本文全面介绍升级过程中的关键变化,特别关注JVM和GC的优化。 语言特性变化Java 8到Java 17各版本关键特性Java 9 (2017年9月) **模块化系统 (JPMS)**:引入模块化概念,提高安全性和可维护性 JShell:交互式Java REPL工具 集合工厂方法:List.of(), Set.of(), Map.of() 接口私有方法:接口中可以定义私有方法 HTTP/2客户端:新的HTTP客户端API Java 10 (2018年3月) **局部变量类型推断 (var)**:简化局部变量声明 应用类数据共享:提升启动性能 并行全GC:改进G1 GC的并行处理能力 Java 11 (2018年9月) - LTS HTTP客户端标准化:java.net.http包 启动单文件源代码:直接运行.java文件 String增强方法:isBlank(), lines(), repeat(), strip() Lambda参数类型推断:var可用于lambda参数 Java 12 (...
Docker Compose引发的网络冲突事件分析
本文记录了一次生产环境中Docker Compose网络配置导致的服务器连接问题,详细分析了问题现象、排查过程、冲突原理,并提供了临时和长期解决方案。通过这次事件,我们可以更好地理解Docker的网络模型和IP地址分配机制,以及如何在复杂网络环境中正确配置Docker网络。 问题现象在一次执行docker compose up -d命令后,测试服务器突然无法连通。测试环境配置如下: 测试服务器拥有公网独立 IP,通过 TP-Link 路由器连接 服务器内网 IP 为192.168.0.100 通过 VPN 连接路由器,VPN 分配的内网 IP 为192.168.100.3 问题出现后,我的电脑可以连接 VPN,但无法连接到测试服务器。 排查过程 通过远程桌面连接到内网中的另一台机器192.168.0.12 从该机器登录到测试服务器192.168.0.100 在服务器上尝试 ping 本机 VPN IP:ping 192.168.100.3 出现错误信息:192.168.96.1 unreachable 运行ifconfig查看网络接口,发现192.168.96.1是 Do...
使用 docker 方式部署 clash
在日常工作中,我们经常需要访问一些国外网站或者服务。Windows 和 MacOS 都有图形化的 Clash 客户端,但在 Linux 系统下,特别是 Ubuntu,找到一个稳定可靠的 Clash 客户端并不容易。为了解决这个问题,我们可以利用 Docker 来部署 Clash 服务,这不仅简化了部署过程,还提供了更好的可维护性和跨平台兼容性。 实现1234567891011services: clash: image: dreamacro/clash:v1.18.0 container_name: clash ports: - 9000:9000 - 7890:7890 volumes: - ./config.yaml:/root/.config/clash/config.yaml mem_limit: ${CLASH_MEM_LIMIT:-64m} restart: unless-stopped 需要从机场下载配置文件 config.yaml,并放在当前目录下。 123456port...

