面试技巧: https://www.jianshu.com/p/e56ef17e72a3
自我介绍: https://blog.csdn.net/xiuwu1332/article/details/78763325
个人信息, 工作单位、工作地点、工作岗位、担任职务、工作内容,个人业绩 职业规划
离职原因
项目目的: 项目的意义是什么,为什么很重要,具体的目的是要完成哪些东西,达到什么样的效果
项目架构: 做技术的,当然还是要说技术,从架构说起,大概分那几部分,每个部分完成什么样的功能,技术上选择的语言,平台,通讯协议
你的贡献: 谈谈自己做了些啥,这个在面试的时候很重要:-),主要是条理性要好,完成了哪些模块,采用什么样的具体技术,碰到了哪些苦难,如何解决的,等等,能说出一些数字往往比较靠谱
目前状况: 目前开发了多少了,或者deploy了,有多少人用,访问量有多少之类的
项目的架构:
1.首先做了一层ngxin负载,和端口映射
2.SpringBoot微服务框架,搭建架构
3.架构中使用业务分层,基础层-common,认证层,业务层,网关层
4.前端(web端)访问后端数据,先通过网关层进行认证,判断是否需要鉴权,
如果需要鉴权:
需要鉴权:
查看是否登陆:
未登录拒绝,返回401状态
如果登陆,进行鉴权,成功返回数据,不成功返回401
需要鉴权:
放行
5.认证结果在redis中进行缓存token,数据存在mysql中
一、java 基础面试题 String,Integer
String
Integer
https://www.cnblogs.com/Latiny/p/8432683.html
二、java 数据结构 list set map queue stack
集合
https://www.cnblogs.com/chenglc/p/8073049.html
https://www.jianshu.com/p/939b8a672070
ArrayList 扩容 默认10 int newCapacity = oldCapacity + (oldCapacity >> 1);
扩容的时候,原始长度为10,需要最小长度是11 计算的扩容长度是15
if newCapacity<=minCapacity 使用minCapacity
else 使用newCapacity
hashMap 为什么默认长度16扩容2倍. 扩容2倍,数据重新拷贝。根据hash & oldCap == 0,if true 在低位,false 放入高位(index+oldCap)
计算key的新hash (h = key.hashCode()) ^ (h >>> 16)
1.8之前头插法 1.8之后尾插法
三、jvm内存模型,gc内存模型
gc内存模型 https://www.cnblogs.com/_popc/p/6096517.html
jvm内存模型 https://blog.csdn.net/u011635492/article/details/81046174
四、垃圾回收器,回收算法,
可达性讲解的比较全: 该文章内还有别的连接讲的也比较好
https://www.cnblogs.com/aspirant/p/8662690.html
http://www.mamicode.com/info-detail-2371340.html
五、jvm调优,调试工具,命令
命令+工具 https://www.cnblogs.com/wxisme/p/9878494.html https://blog.csdn.net/qq_20597727/article/details/86619408
jinfo是用来查看JVM参数和动态修改部分JVM参数的命令
jstat : jstat -gcutil 11666 1000 3 11666为pid,每隔1000毫秒打印一次,打印3次
jstack -F 当使用jstack <pid>无响应时,强制输出线程堆栈。 jstack -l 11666 | more
jmap是用来生成堆dump文件 jmap -histo:live 11666 | more 输出存活对象统计信息
jhat是用来分析jmap生成dump文件的命令
工具 https://www.cnblogs.com/fengda/p/10126235.html
调优 https://blog.csdn.net/Javazhoumou/article/details/99298624 https://www.iteye.com/blog/uule-2114697
六、nio,序列化
io nio https://www.cnblogs.com/jiangwz/p/9193776.html
bio nio aio https://my.oschina.net/u/3471412/blog/2966696 https://blog.csdn.net/userofithis/article/details/90263294
七、多线程,线程池,高并发
线程池 https://www.jianshu.com/p/7ab4ae9443b9
交替打印奇偶数 https://www.jianshu.com/p/7a1612b1431c
锁的类型及使用 https://www.cnblogs.com/hustzzl/p/9343797.html
八、版本特性
1.8之前 https://blog.csdn.net/will_8000/article/details/81381356
1.8之后 https://www.cnblogs.com/javazhiyin/p/11394448.html https://blog.csdn.net/ranyuangang/article/details/82855017
九、设计模式
http://c.biancheng.net/design_pattern/
十、算法
5大算法 贪心 回溯 动态规划 分治 分支限界法 https://blog.csdn.net/qq_39147389/article/details/82252924
简单算法实现 https://www.cnblogs.com/juochiu/p/6417194.html
https://blog.csdn.net/weixin_35381618/article/details/83748529
所有排序算法 https://www.cnblogs.com/guoyaohua/p/8600214.html
十一、类加载器
https://www.cnblogs.com/aspirant/p/7200523.html
十二、mysql
https://blog.csdn.net/caijunsen/article/details/83045985
https://www.jianshu.com/p/2a66b2ddc0fd
事务隔离级别
http://www.zsythink.net/archives/1233/
事务传播特性
https://blog.csdn.net/weixin_39625809/article/details/80707695
事务不生效的情况
https://www.cnblogs.com/heqiyoujing/p/11221093.html
索引不生效
https://blog.csdn.net/weixin_40197494/article/details/100035943
分布式锁
https://www.cnblogs.com/barrywxx/p/11644803.html
分布式事务
https://www.cnblogs.com/bluemiaomiao/p/11216380.html
https://www.cnblogs.com/mayundalao/p/11798502.html
死锁解决方案
https://www.cnblogs.com/tartis/p/9366574.html
锁的类型:间隙锁
mysql 优化 https://www.cnblogs.com/tufujie/p/9413852.html
int2 int10 区别
CAP理论
https://blog.csdn.net/qq_25353433/article/details/81283733
https://yq.aliyun.com/articles/692238
优化,索引左前缀特性
聚集索引,非聚集索引
innodb 主键是聚集索引,非主键索引的叶子节点内容是主键的值。在 InnoDB 里,非主键索引也被称为二级索引(secondary index)
MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址,非聚集索引
B Tree
B+Tree
可能搜索到某一层就结束了
想比: 2.非叶子结点的子树指针与关键字个数相同;5.为所有叶子结点增加一个链指针; 6.所有关键字都在叶子结点出现;
B+树只有达到叶子结点才命中
B*Tree
B*树分配新结点的概率比B+树要低,空间使用率更高
集群
http://www.sohu.com/a/296980325_468635
十三、缓存数据库 redis
https://blog.csdn.net/chinahuyong/article/details/82683155
https://stor.51cto.com/art/201910/604653.htm
redis 数据结构: list set map sortedSet(跳表)
sorted set : https://blog.csdn.net/linyu19872008/article/details/72403962
redis 事务: https://www.cnblogs.com/DeepInThought/p/10720132.html
redis击穿: 定义key的规则,缓存空对象,排队查询mysql(双重检查锁定),value永不过期,分布式锁只有一个去查库,布隆过滤器
redis雪崩: key缓存失效时候尽可能错开,热key永不失效,队列减少查询次数,多级缓存,预更新缓存手动更新缓存,布隆过滤器
过期策略: 定时,定期,惰性 https://www.cnblogs.com/sunsing123/p/11093038.html
淘汰策略
购买第三方可靠性高的Redis云服务器; 提高高可用 哨兵 集群
一致性hash 解决缓存命中 虚拟节点
十四、消息队列
https://developer.51cto.com/art/201905/597172.htm
kafka 性能
https://blog.csdn.net/moonpure/article/details/80561562
十五、spring
如何架构一个项目 https://blog.csdn.net/a1405/article/details/90548028
springboot aop 原理 https://blog.csdn.net/woshilijiuyi/article/details/83934407
springboot启动过程
Spring 注解
@configuration @ComponentScan @Conditional @Import @ImportSource @Component
springboot 关键注解
@SpringbootApplication @SpringBootConfiguration @EnableAutoConfiguration @configurationProperties
@enableConfigurationProperties @ConditionalOn---- @ConditionalMissing---
Spring mvc 关键类 DispatcherSeverlet
mybatis : reuse batch sample
springcloud组件 : eureka feiginClient hitricx rebbon zull config
十六、rpc restfull
RPC框架 : java rmi ,RESTful API http + json springCloud ,Netty - Netty框架不局限于RPC,Dubbo是Alibaba开发的一个
RPC框架
分布式,幂等性 乐观锁 解决分布式一致性
rest 设计 软件架构风格 REST只是一种概念、风格或者约束
统一的接口
层次化,资源是有层次的,应该在URL中体现
每个资源对应一个唯一标识
使用标准的方法来更改资源的状态
无状态,request有字描述性,需要提供足够信息
可缓存,恰当地缓存请求提高性能
如果一个系统满足了上面所列出的五条约束,那么该系统就被称为是RESTful的。
统一接口约束 资源和状态
十七、协议
协议类:http,tcp ip
OSI(Open System Interconnect)
https://blog.csdn.net/qq_41517936/article/details/80886618
十八、
git,maven
十九、大数据
大数据,框架
加密算法
算法刷题 leetcode
主流公司面试题
https://github.com/0voice/interview_internal_reference