阿里java面试细节

 

基础

  • 面向对象三大特性:封装、继承、多态如何在Java中体现

  • String StringBuilder StringBuffer区别 ""+""实现过程

  • 什么时候重写hashcode和equals方法

  • 深拷贝浅拷贝

  • BIO、NIO、AIO原理及应用场景

Java的东西很多而且很深,上面说的只是一小部分,面试结束尤其推荐java是突击学来的同学再系统的学学,《Java核心技术》一共两卷,非常厚。

容器

  • List、Map、Set区别及使用场景

  • 对比List、Map、Set的各种子类

  • HashMap原理 扩容缩容机制、存储结构、rehash实现方法等 一定要熟悉底层代码实现及算法原理

  • HashSet如何查重

  • ArrayList 和 Vector 的区别

一定要耐下心看各个常用容器(HashMap、ArrayList)常用方法的实现算法及代码实现

并发

  • 进程、线程、协程和程序各自是什么及区别

  • 上下文切换

  • synchronized实现原理(结合JVM 连带讲锁升级)

  • 可重入锁代码实现及原理

  • ThreadLocal 一定要看源码 与Thread的关系、hash算法、内存泄漏及如何避免

  • 线程池 针对不同情况参数如何选择

  • 原子类

  • CAS

  • AQS原理

不光要背面试题 建议面试结束后再深入学学java并发 推荐《Java并发编程的艺术》

JVM

  • JMM结构(最好可以针对不同虚拟机 不同版本 或者只说HotSpot虚拟机)每部分的作用,及什么时候会用到

  • java对象创建过程

  • 类加载机制

  • 内存分配与回收策略

  • 如何判断对象是否可被回收

  • 四种引用

  • 垃圾回收算法

  • 垃圾回收器

MySQL

  • 一条sql语句(增加、删除、修改语句)在MySQL中如何执行

  • 对比常见的存储引擎(主要对比innodb 和 myisam 最好能多说出几种常见的存储引擎及特点)

  • 索引(能说出innodb 和myisam 的策略最好)

  • 事务 什么是事务 并发事务带来的问题

  • 事务隔离级别 innodb如何保证(主要说如何解决幻读)

  • innodb 锁机制

  • innodb 日志 mysql 日志 两段式提交

  • 一条sql执行的慢的原因

  • 大表优化

  • mysql不同存储引擎存储结构

  • MySQL 索引为什么采用B+树?

想深入学习mysql的同学推荐这本《高性能MySQL》,极客时间上的MySQL45讲同样也非常经典

Redis

  • 为什么用缓存(不光是说redis 可以先从计算机cache说起,再到具体环境中,比如网上商城怎么怎么样需要缓存,然后各种缓存什么特点,最后为什么选redis,这里就可以顺便说说redis的结构)

  • 对比两种常用缓存中间件redis和Memcached

  • redis单线程模型及为什么不需要多线程(6.0后又引入了多线程)

  • 持久化策略

  • 数据过期淘汰策略

  • 内存淘汰机制

  • 缓存穿透 缓存雪崩 如何避免

  • 事务

  • 如何保证redis-数据库数据一致性

  • 主从结构如何保证(主机-从机)数据一致性

  • 主机坏了如何选出新的主机

消息队列

  • 有哪些常见的消息队列?用过哪些?

  • 队列模型和发布/订阅模型的区别?

  • 如何保证消息的有序性?

  • 如何保证消息不丢失?

  • 如何不重复消费消息?也就是消息消费的幂等性

  • 如果让你来设计一个消息队列,该如何考虑

Spring

  • 介绍一下spring( or spring boot)吧(什么是spring 有什么特点 优势 对比不用的情况)

  • 列举一些比较重要活比较常用的模块(aop orm test... 官网那张图)

  • AOP IOC

  • bean 生命周期 如何加载一个自己的bean进容器

  • 事务

  • 解释一下常用的注解

设计模式

  • 最容易考到是手写一个单例设计模式,一定要搞清楚那几种各自哪里有问题。

  • spring、redis、rocketmq中用到了什么设计模式?在哪用到的?

  • 你的项目中用到设计模式了么 ?为什么用? 在什么情况下用? 用它的好处是什么? 如果不用会怎样?

计算机网络

  • 网络的七层通信模型,常见的协议比如 TCP、IP、UDP、ARP、HTTP、FTP 等都位于哪一层

  • 常见 Http 的状态码的含义(常见的502,500,404,302,204,200等),遇到对应问题知道如何去处理

  • Http请求的构成

  • GET 和 POST 有什么区别

  • TCP 和 UDP 的区别(TCP 为什么可以保证传输的可靠性)

  • TCP 的三次握手和四次挥手(为什么挥手需要四次)

  • TCP 的拥塞控制(慢开始,拥塞避免,快重传,快恢复)

  • TCPTCP

  • 什么是 ARP 协议。

  • ping 命令的实现原理,ping 命令为什么不需要端口号

  • 从输入 URL 到页面加载发生了什么?

  • 长连接和短连接

操作系统

  • 操作系统的线程与进程的区别,线程有几种状态?

  • 线程间通信的方式与进程间通信的方式。

  • 什么是死锁?死锁的必要条件,如何避免死锁?

  • 进程的调度算法

  • 磁盘的寻道算法

  • I/O 模型

  • 如何线程同步?有哪些方式

其他

  • 了解 Hadoop 吗,介绍一下 hdfs 与 mapreduce

  • Nginx 做反向代理以及负载均衡

  • 微服务主要有哪些相关技术?

  • 会重点问到项目用到的技术,并深挖细节来问,为什么这样做?现在有没有什么更好的解决方式?因此准备项目经历时不要广而要深

  • 对自己进行评价,优点缺点各是什么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值