准备春招,有感而发 (已经快疯掉了...)。
当你决定学Java,这是你即将面对的...(一部分):
Java基础:语法,集合 (HashMap:红黑树、哈希冲突、扩容、负载因子;ArrayList:扩容;Collection:Set (HashSet、LinkedHashSet、TreeSet)、List (ArrayList、LinkedList、Vector、Stack)、Queue (PriorityQueue);Map),Stream API,反射,面向对象,注解 (注解原理,标记),IO流,异常处理 (Exception、Error,异常处理建议),SPI机制,JDK动态代理,Lambda表达式,网络编程,泛型 (泛型擦除、上下界限定符),不可变类 (线程安全),多态性 (编译时多态、运行时多态),参数传递方式 (都是按值传递),为什么不支持多重继承 (菱形继承问题),内部类类型,java8新特性 (Optional),StringBuilder实现,包装类型 (与基本类型区别,缓存,自动装箱拆箱),JDK和JRE,hashCode、equals与==,字符串常量池。
Java并发:CompletableFuture,CountDownLatch、CyclicBarrier、Semaphore等同步工具类,ReentrantLock,synchronized (锁升级、锁消除、锁粗化,可重入性,修饰对象区别,自适应自旋),ReentrantReadWriteLock,StampedLock,线程池工作机制 (线程数、线程空闲时间、任务队列、线程工厂、拒绝策略;Executors线程池类型;线程池线程异常处理;ScheduledThreadPool定时任务线程池 (DelayQueue延迟队列)、Timer、时间轮;ForkJoinPool),并发集合 (CopyOnWriteArrayList,Collections.synchronizedList,CopyOnWriteArraySet,ConcurrentSkipListMap,ConcurrentSkipListSet,BlockingQueue;ConcurrentHashMap:分段锁),CAS (ABA问题:时间戳、版本号),原子操作类,线程生命周期,线程通信机制,创建线程方式 (构造参数Runaable、继承Thread、构造参数FutureTask (包装Callable)、线程池),AQS,Java内存模型 (JMM,可见性、有序性和原子性)、Happens-Before原则、内存屏障、指令重排,ThreadLocal (Thread中有个ThreadLocalMap属性 (<WeakReference<ThreadLocal>,Object>),先通过当前线程获取其ThreadLocalMap,然后通以this为key获取其值)、InheritableThreadLocal、TransimittableThreadLocal (向线程池中的线程传递ThreadLocal),volatile语义 (可见性、禁止指令重排序)。
JVM:内存结构 (直接内存,常量池),常见垃圾回收算法 (判断对象是否是垃圾:引用计数法、可达性分析法;分代回收算法,三色标记算法,各类型gc,PLAB),常见垃圾收集器 (记忆集维护,logging write barrier记录对象引用变化,垃圾回收流程),类加载器 (双亲委派模型、类加载过程、自定义类加载器),基本调优技巧 (垃圾回收调优,内存分配调优),调优经验,JVM性能分析工具 (内存泄露分析,死锁分析),线程TLAB,JVM组成部分,JIT即时编译,AOT预编译,逃逸分析 (编译优化,消除不必要的加锁操作),强软弱虚引用,对象内存布局 (对象头、实例数据、对齐填充),Java程序执行流程。
MySQL:SQL语句,如何进行SQL调优,库表设计建议,索引 (索引类型,聚簇索引,回表查询,覆盖索引,索引下推,索引设计原则,联合索引的最左前缀匹配原则),锁 (锁类型),事务 (ACID,事务隔离级别、各级别实现原理、各级别问题 (脏读、不可重复度、幻读)),日志 (redo log、undo log (WAL技术)),MVCC (undo log与readView),分库分表,explain语句SQL分析,数据排序实现,SQL语句执行流程,InnoDB、MyISAM存储引擎 (事务、锁、外键、读写性能、数据索引组织方式),B+树数据组织和查询数据流程,长事务问题,如何检测死锁,count(* | 1 | 字段)区别,主从同步、读写分离,buffer pool (change buffer),innodb架构,doublewrite buffer,log buffer,多表JOIN建议及问题,深度分页问题,delete、drop、truncate区别,数据库三大范式,常用函数,AUTO_INCREMENT达到最大值后的问题,varchar类型,为什么不推荐使用存储过程,数据库不停服迁移,查询优化器如何选择执行计划,MySQL事务二阶段提交机制 (确保redo log、binlog的一致性),三层B+树能存多少条数据 (假设一条数据1KB大小),select、from、join、where、group by、having、order by、limit执行顺序。
Redis:分布式缓存,分布式锁 (实现原理和各种问题),分布式限流,常用数据结构,缓存穿透、击穿、雪崩问题,RDB、AOF持久化策略,内存淘汰策略,主从同步,缓存一致性,Redisson,Lua脚本,线程模型,哨兵模式,Cluster分片集群,事务,Pipeline,BigKey问题,热点Key问题,Cluster集群的脑裂问题,Pus/Sub订阅发布,RedLock红锁,排行榜实现,布隆过滤器实现,统计大量用户唯一访问量,Geo地理位置数据处理。
SSM、SpringBoot:IOC控制反转 (DI依赖注入:构造器注入、setter注入、字段注入、方法注入、接口回调注入;BeanFactory;FactoryBean;ApplicationContext:核心容器BeanFactory、国际化MessageSource、资源获取ResourceLoader、环境信息EnvoronmentCapable、事件发布ApplicationEventPublisher;IOC容器启动过程:加载配置 (xml配置文件、注解扫描配置类)、bean定义注册 (BeanDefinition)、bean生命周期、发布事件),AOP面向切面编程 (切面、连接点、通知、切入点、织入;基于动态代理实现),能够开发基于Spring Boot Starter的SDK,SpringMVC核心组件 (请求-处理器映射、数据校验、数据绑定、异常处理、拦截器、过滤器,父子容器WebApplicationContext),SpringMVC工作流程,自动装配原理,bean生命周期 (BeanPostProcessor,初始化、销毁回调)、bean作用域,循环依赖、三级缓存,事务管理 (事务传播行为,事务失效情况 (同类方法调用不会走代理方法、非public方法、final或static方法)),自动装配方式 (byName、byType、constructor),常用注解 (@Qualifiter、@Import (将普通类导入到Spring容器,配合@Configuration使用)、@Primary、@Profile、@Conditional (有条件地装配bean)、@Lazy、@PropertySource),事件机制 (ApplicationEvent、ApplicationListener、@EventListener、ApplicationEventPublisher),Restful风格的接口。SpringBoot:启动流程 (@SpringBootApplication:@Configuration、@ComponentScan、@EnableAutoConfiguration),自动配置 (@EnableAutoConfiguration,加载spring.factories中的类到容器中作为配置类,扫描类路径依赖,根据预定义的条件加载相应的配置类),内置服务器,jar包运行,配置文件加载优先级,starter开发流程 (引入依赖、定义属性配置类、定义自动配置类、结合条件注解条件配置bean、创建spring.factories文件并添加自动配置类)、启动时执行特定代码 (ApplicationRunner、CommandLineRunner)。MyBatis:二级缓存机制、执行流程、半ORM框架、#{}与${}区别、动态SQL执行原理、resultMap映射、子属性的延迟加载、插件机制 (通过动态代理实现,实现Interceptor接口,在SQL执行的关键点拦截操作并增强功能:ParameterHandler参数处理器、StatementHandler SQL语句处理器、ResultSetHandler结果集处理器、Executor执行器)、TypeHandler类型处理器 (处理数据库类型和Java类型间的转换)。
Dubbo、SpringCloud、SpringCloudAlibaba:核心组件,分布式理论 (CAP原则),注册中心 (Nacos、Etcd、Zookeeper、Eureka),负载均衡策略 (ribbon、loadbalancer) (轮询、加权轮询、随机、加权随机、最少连接、哈希、一致性哈希),重试容错策略,限流熔断(失败比例,半开状态) 策略 (sentinel、hystrix),序列化协议,远程调用 (RPC协议 (Dubbo)、OpenFeign),API网关 (Gateway、zuul),分布式事务 (seata、本地消息表、事务消息),配置中心 (Apoll) (集中管理,动态更新 (长连接),多环境支持),分布式链路追踪 (Sleuth、Zipkin) (traceId标识整体调用链路,spanId标识服务内调用链路),微服务 (软件架构风格,单一职责原则),日志收集 (ELK),软件发布策略 (灰度发布、金丝雀发布、蓝绿发布)。
消息队列:工作模式、消费模式,作用 (异步通信、服务解耦、流量控制),如何保证消息不丢失 (消息可靠性) (生产者消息确认、Broker消息持久化、消费者消息确认),如何处理重复消息 (幂等性消费:唯一标识去重),如何保证消息的有序性,如何处理消息堆积,Broker与消费者间消息传递的推拉模式 (长轮询)。
Linux、Docker:Linux常用命令,Docker常用命令,项目部署,宝塔,Jenkins自动化部署经验,docker-compose,dockerfile。
工具:Git,有过使用Git协调团队开发经验,Maven,Hutool等常用类库,AI,Swagger,JMeter。
前端:HTML、CSS、JavaScript,Vue,ElementPlus,UniApp。
全部评论
(6) 回帖