时隔1年,甚是感慨,没想到这么快又来面试了。一面(30分钟)2023.07.10自我介绍能简单说一下用了哪些设计模式能简单描述一下策略模式吗?策略模式和if-else有什么区别,怎么定义策略类的Linux在一个目录下面,有100个文件,需要匹配以 ‘query’ 开头的日志,并且把数量统计一下,用什么命令 (grep -c '^query' /path/to/directory/*)Java版本用什么平时有用多线程吗用过stream和lambda表达式吗有一个list,包含字符串,先转换成大写,然后再对这个list进行排序public class StringListSorting { public static void main(String[] args) { List<String> myList = new ArrayList<>(); myList.add("apple"); myList.add("banana"); myList.add("orange"); myList.add("grape"); // 转换为大写形式 List<String> uppercaseList = new ArrayList<>(); for (String str : myList) { uppercaseList.add(str.toUpperCase()); } // 或者使用流式操作 // List<String> uppercaseList = myList.stream().map(String::toUpperCase).collect(Collectors.toList()); // 对转换后的列表进行排序 Collections.sort(uppercaseList); // 或者使用流式操作 // List<String> sortedList = uppercaseList.stream().sorted().collect(Collectors.toList()); System.out.println(uppercaseList); }}9、你们Redis的使用场景,具体怎么去用10、基于Redis做分布式锁有使用Lua脚本吗11、两张表,一个是员工表副表筛选出某部门工资最高的员工的nameSELECT e.name FROM employee e INNER JOIN department d ON e.departmentId = d.departmentId WHERE d.departmentName = '目标部门名称' ORDER BY e.salary DESC LIMIT 1;12、会用反射之类的吗13、对数据库索引有一些优化吗14、假如有sql比较慢,怎么去优化15、三数之和16、反问二面(20分钟)2023.07.13自我介绍项目中主要做那一块的工作项目中具体做了哪些性能优化大数据量表除了分表还有什么优化方式(分库、加索引、数据归档)什么情况用到Redis,怎么用,怎么做分布式锁为什么可以Redis可以用做分布式锁为什么不用其他的,而用Redis比较过Redis和其他缓存框架的性能吗Memcached能用作分布式锁吗为什么可以Redis可以用做分布式缓存,Memcached能做到吗有没有什么项目留下深刻印象工作中看过什么其他技术(大概说了下k8s)能说一下什么是配置中心吗了解过多线程吗为什么不要new Thread()写个造成死锁的代码public class DeadLockDemo { private static Object resource1 = new Object();//资源 1 private static Object resource2 = new Object();//资源 2 public static void main(String[] args) { new Thread(() -> { synchronized (resource1) { System.out.println(Thread.currentThread() + "get resource1"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread() + "waiting get resource2"); synchronized (resource2) { System.out.println(Thread.currentThread() + "get resource2"); } } }, "线程 1").start(); new Thread(() -> { synchronized (resource2) { System.out.println(Thread.currentThread() + "get resource2"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread() + "waiting get resource1"); synchronized (resource1) { System.out.println(Thread.currentThread() + "get resource1"); } } }, "线程 2").start(); }}17、除了用synchronized加锁还有其他方式加锁吗18、用ReentrantLock怎么实现19、反问