美团移动端开发一面(后端捞移动端)
面试题目
- 自我介绍
- 有在其他地方学到java的知识吗?
- 面向对象的语言的三大特征?解释一下多态?除了继承,还有其他方式实现多态吗?
- java有哪些基本类型?long和float占用的字节和区别?
- 静态内部类和匿名内部类的区别?对外部成员变量的访问差异?
- java的四种访问权限?protect和default的区别?
- exception和error的区别?中断和捕获?
- 编译时异常和运行时异常的区别及例子?
- 线程的run方法和start方法有什么区别?
- tcp和udp的区别?
- 什么是三次握手?什么是四次挥手?为什么是四次挥手?
- get和post的区别?
- 线程和进程的区别?
- 操作系统对于进程的策略?
- 解释一下并发和并行?
- 栈和队列的区别?
- LinkedList和ArrayList的区别?
- ArrayList是线程安全的吗?为什么不安全?
- 说一下HashMap的数据结构?为什么使用红黑树?
- 项目拷打
- AI对于工作和生活的改变?
- 对AI的学习方法及习惯?
- 学习AI的渠道?claude code的源码泄漏相关看法?
- 手撕代码:链表逆序求和(类似LeetCode 445)
参考解析
- 多态实现:Java中多态主要通过继承父类(方法重写)和实现接口(接口方法实现)来实现,在编译期表现为向上转型。
- Error vs Exception:Error表示系统级错误(如OutOfMemory),不可恢复;Exception是程序逻辑异常,可通过try-catch处理。
- Run vs Start:调用run方法仅仅是普通的方法调用,不会创建新线程;调用start方法才会启动线程,并由JVM调用run方法。
- TCP vs UDP:TCP是面向连接、可靠的传输,保证数据有序到达;UDP是无连接、不可靠的传输,效率高,适用于实时通信。
- ArrayList线程不安全:ArrayList在多线程环境下进行add操作时,可能会发生数组扩容冲突或覆盖数据,导致数据不一致或抛出异常。
- HashMap红黑树:当链表长度超过8时,查询效率会大幅下降,红黑树的查找时间复杂度为O(log n),能有效提升Hash冲突严重时的性能。