程序猿修炼大纲

….

java学习,大体上可以分为筑基,金丹,元婴,分神,渡劫,大乘等 6 个境界。

一.筑基期

二.金丹期

三.元婴期

四.分神期

五.渡劫期

六.大乘期

内功: 基础,算法,设计模式
外功: 项目
实战:

辅助计
真气

24 式: 设计模式

功法: java 基础指南

工具类:

身法: 阿里巴巴编码规范

心法:

在线评测:

编辑器:

java 正则表达式
用 lamda 表达式
java 导出 word
队列 栈
通过反射改变 String 类的值
java 类型转换
volatile 关键字 读写锁
微服务

CAP:
一致性 可用性 分区容错性

Json序列化和反序列化

不同mq的对比
缓存: redis / Memcache
Redis
雪崩 增加mq 排队处理 增加锁
穿透 设置空值,并设置失效时间
击穿 热点词永不过期
Mybatis情况下,同一个 SqlSession 对象, 在参数和 SQL 完全一样的情况先, 只执行一次 SQL 语句(如果缓存没有过期)
系统拆分
缓存
MQ
分库分表
读写分离
ElasticSearch
单点登陆
restful风格
基本数据结构
队列 栈 二叉树 堆

高并发:消息队列 / 搜索引擎 /缓存 / 分库分表/读写分离
分布式:系统拆分 / 分布式服务框架dubbo / 分布式锁/ 分布式事务/ 分布式会话/
高可用:基于Hystrix /高可用系统 / 限流 /熔断 /降级

微服务开发:

  1. 微服务注册发现
    Eureka
    zookeeper cp 数据一致和分区容错
    dubbo ap 数据可用和分区容错
  2. 微服务配置管理
    SpringCloudConfig
  3. 权限认证
    shiro
    Spring Security
  4. 批处理
    Spring Batch
  5. 定时任务
    Quartz
  6. 微服务调用 (协议)
    Rest 通过 HTTP/HTTPS 发送 Rest 请求进行数据交互
    RPC 它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 不依赖于具体的网络传输协议,tcp、udp等都可以
  7. 服务接口调用
    Feign(HTTP)
    Spring Cloud Netflix 的微服务都是以 HTTP 接口的形式暴露的,所以可以用 Apache 的 HttpClient 或 Spring 的 RestTemplate 去调用,而 Feign 是一个使用起来更加方便的 HTTP 客戶端,使用起来就像是调用自身工程的方法,而感觉不到是调用远程方法
  8. 服务熔断 作用: 当请求到达一定阈值时不让请求继续.
    Hystrix
    Sentinel
  9. 服务的负载均衡 作用:降低服务压力, 增加吞吐量
    Ribbon Spring Cloud Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具, 它基于 Netflix Ribbon 实现
    Nginx Nginx (engine x) 是一个高性能的 HTTP 和反向代理 web 服务器, 同时也提供了 IMAP/POP3/SMTP 服务
    Nginx 属于服务端负载均衡,Ribbon 属于客户端负载均衡.Nginx 作用与 Tomcat,Ribbon 作用与各个服务之间的调用 (RPC)
  10. 消息队列 解耦 异步 削峰
    Kafka
    RabbitMQ
    RocketMQ
    activeMQ
  11. 日志采集 (elk)
    Elasticsearch
  12. API 网关
    作用: 外部请求通过 API 网关进行拦截处理, 再转发到真正的服务
    Zuul
  13. 数据存储
    作用: 存储数据

关系型数据库 MySql
非关系型数据库 Mongodb Elasticsearch

  1. 缓存
    redis
  2. 分库分表
    Mycat
  3. 服务部署
    Docker
    Jenkins
    Kubernetes(K8s)

java基础(lamd表达式,线程,锁,IO流,jdk基础命令) SpringBoot Springcloud Mybatis
redis mq
docker nginx
数据库基础
常见设计模式
搭一个分布式架子

项目:

  1. 淘淘商城 ssm springcloud
  2. springboot 博客
  3. springcloud 商城
  4. springcloud 乐优商城

复习大纲:

  1. 高并发高可用
  2. java基础知识
  3. java基础知识

腾讯云:
一面:

  1. 项目
  2. redis开启事务/数据库开启事务
  3. 分布式事务
  4. 分布式锁/数据库锁(悲观锁/乐观锁)
  5. 工作流引擎
  6. docker
  7. 高可用项目搭建
    二面:
  8. redis怎么解决读写不一致
  9. 两个链表判定相交
  10. mq消息作用
  11. 项目介绍
    三面:
  12. 自我介绍
  13. redis在项目中的应用
  14. redis存储数据有几种形式
  15. lock和Synchronize
  16. hashmap底层结构。hashmap扩容,1.7和1.8区别。红黑二叉树的作用
  17. 了解哪些数据结构
  18. 层序遍历二叉树
  19. 线程池,线程池的工作流程
  20. 数据库锁,数据库mvcc

蚂蚁金服:

滴滴:
一面:
项目中缓存应用
解决缓存和数据库不一致
高并发场景下怎么优化redis
本地缓存和数据库不一样
项目难点
数据库锁
数据库红黑二叉树
最左匹配,以及实际存储的应用
hashmap介绍
juc介绍
介绍下动态代理
AOP和IOC
介绍下分布式场景下的应用

用友科技:
一面 + 二面:
项目介绍
redis的应用
redis锁
mq在项目的应用
mq解决消息不一致
消息丢失
数据库锁
hashmap介绍

主管面:
个人情况
薪资
交流岗位介绍

hr:

同花顺:

阿里乌鸫科技:
hashmap怎么解决hashcode不一致
hashmap原理
解决hash冲突方法
redis里面缓存和数据库不一致
项目里面事务怎么用的
本地消息表
Rabbimq怎么用的
Java序列化的对象,添加新的字段,反序列化出错怎么解决
项目线上会出什么问题,怎么解决的

新华三:
笔试(判断,选择少量漏选,问答开放): java基础知识,多线程,MVC架构
一面:笔试成绩较好,面试问个人规划,工作情况,离职原因
二面:呃,还是问公司项目开放流程。说项目组开发需要自己设计规则,当产品经理,思维活跃。
思考题: 数字1-10,数组a[0]到a[9].找出数组里面不存在1-10的数。呃 思考较久,面试官觉得思维不够活跃。批评了我基础不行,思维不活跃。
hr面:个人规划,离职原因,薪资预期,是否抗压。说下周等待主管面
总管面:
项目介绍

民泰银行:
一面
项目介绍
自定义注解实现
本地缓存实现
spring和aop的区别
cap怎么保证?zk和eureka
Mq怎么拉取消息
Mq模式

头条:
一面:
项目介绍
项目难点
linux的多路IO复用
es的原理
es存储不同数据的区别
jvm的分代手机算法
hashmap和concurrenthashmap
怎么理解线程安全,多线程会导致什么问题
算法: 给定n条边的顶点和端点,判断图里是否有环

阿里
一面:
hashmap
锁的机制
红黑二叉树
juc下的包
syn和lock
AOP的原理(AOP和IOC)

redis的IO多路复用模型
二面:
三个问题选一个作答,时间为一小时
1、给定两个文件,两个文件中记录了商品的交易信息(格式一样,乱序),请找出两个文件中售卖量Top n的商品及其价格
文件格式为:商品名(字符串)\t价格(两位小数的正数),如:
西湖龙井500g 700.00
长城干红750ml 75.00

2、实现一个针对读多写少场景的有序容器,可以一个一个的插入元素,可以改变这个容器内容的,
容器的容量限制为固定大小,要求任何时候这个容器都是有序的。
比如一次插入 [5, 3, 3, 1],希望顺序是 [1, 3, 3, 5],
要求: 不借助任何其他有能排序特性的第三方容器

3、编程:假设有一个A站点,每次登陆的时候都会记录用户的登陆信息日志,
对象类型是User,有3个字段: userId, userName, loginTime
需求:统计最近10天(每天约10亿条日志)登陆最频繁的10个用户,
排序并输出出这10个用户各登陆多少次
要求:a. 不可直接使用SQL统计,请使用JAVA代码编写
b. 功能完备,逻辑正确

常见算法题:

Thank you for your accept. mua!
-------------本文结束感谢您的阅读-------------