阿里虎鲸文娱 Java 后端一面
面试概况
面试官非常和善。题目以场景题为主,同时着重询问是否有写业务代码的实习经历。面试官强调:程序员的第一要义是要解决什么问题。
题目列表
Java 基础
- 如何判断两个字符串是否相等?
- String 不可变吗,该如何使用字符串拼接?
- ArrayList 和 LinkedList 有什么区别?
- Java 为什么要设计异常机制?
- try-catch 应该整体包一大段,还是按逻辑拆开写?
多线程与并发
- 多线程主要解决什么问题?
- 线程池的创建参数有哪些?
- 有两类任务 A 和 B 并发到来,要求必须等所有 A 执行完成后才能执行 B,应该怎么设计?
- 线程池的线程数一般如何设置?
- HashMap 在多线程场景下使用要注意什么?
- HashMap 在只读并发场景下可以直接使用吗?
- 并发请求场景下,如何统计下游接口的失败率?如何在尽量不影响原接口性能的前提下实现并发 counter 统计?
编程思维
- 递归和循环都能实现时,一般更倾向于用哪种?为什么?
网络与分布式
- Session 和 Cookie 有什么区别?
- 分布式系统中,用户信息通常如何存储?
设计原则与设计模式
- 常见的程序设计原则有哪些?
- 什么是设计模式?为什么要学习设计模式?
- 什么是策略模式?适用于哪些场景?
- 代理模式和装饰者模式有什么区别?
- 实现了一个新的设计模式后,给别人讲时一般应该讲哪些内容?
数据库
- 数据库索引的作用是什么?
- 已经建了索引,哪些情况下会导致索引失效?
- 创建联合索引时需要注意什么?
场景与软技能
- 需求做到一半发生变化时,应该如何应对?
- 产品经理给了一个不太好的方案你该怎么办?
- 领导临时给你一个完成一半的系统,后续工作全权交给你,你会怎么做?
- 线上系统出现故障,用户无法使用,你该怎么处理?
- 有什么感受到挫折的事情?
- 有什么感受到自豪的事情?
反问
- 反问环节(内容未记录)