2020/7/11 牛客阿里JAVA工程师直播
基本知识储备(基本功)
计算机基础知识
【优先级:高】:数据结构、数据库(Mysql,MongoDB)
【优先级:中】:操作系统、组成原理
【优先级:低】:网络(至少了解基础概念qps\tps\带宽)
语言基础知识
-
JAVA基础语法
-
泛型、异常、常用工具(Guava\FastJSON)
-
多线程、JVM、ClassLoader
其他加分项
- Shell基础语法
- H5基础语法
- 正则表达式
进阶知识储备(结合场景理解)
经典技术框架(中间件)
- 数据库:JDBC,Mybatis,Hibernate
- MVC:Spring(阿里用Spring全家桶),Structs2
- 异步同步(消息中间件):MQ
- 集成框架:SSH,SSM
- 存储:OSS(阿里,面向用户),CDN(静态,做缓存)
- 引擎:ES(阿里,搜索引擎),MVEL(表达式引擎),Groovy(表达式引擎)
容器:
- docker,tomcat
- 阿里云ECS
架构设计
- 设计模式
- 领域模型
业务知识储备(行业通用方案)
核心能力
- 对目标企业的业务有一点了解
- 对业务难点技术细节有一点了解
- 自己的想法,无论对错
案例一:TopK问题:如百度排序
- 分治(split):将大化小,化成多个map
- 规约(map):统计小map的TopK
- 排序(shuffle+reduce):堆排序、快排(内部);归并(外部)
案例二:秒杀问题:如电商零点秒杀
- 系统隔离(域名、应用机器、数据库):
按业务的重要性进行隔离,如大促期间访问收藏夹的量低于购物车 - 业务隔离(业务预热、热点发现、冷热分离):
业务预热:对大商户进行预热(模拟,会产生缓存),
热点发现:根据去年的销量,将爆款化为重点业务
冷热分离:重点业务与非重点业务分离 - 动静隔离(Localcache\CDN\tair)
- 常规操作:扩容,限流(分层校验),削峰(限制秒杀器:验证码、答题),降级,异步补偿,排队
动手能力提升(面向对象,算法)
核心能力
- 面向对象的抽象能力
- MVC架构及解耦能力
- 基础算法必知必会
案例一:我开我的车加油后从A地出发开往B地
- 对象:
车(父类)——汽车(子类)——我的车(实现)、
地点(对象)——A\B地(实现) - 车:型号、油量等
- 服务:开车、停车、加油
- 执行器:实例化我的车、实例化两个地点、计算ab距离、加油服务、开车服务、调整油量