2020-12-06

在今天结束之前写完了一起教育的笔试题

看完了CyC2018的求职策略课

晚上睡前把单词背了

趁着刚看完课还有一些思绪,现在规划明天的计划

1.明天8点钟准时起床,留在宿舍或者自习室学习

2.一定要投简历,并且只投Java岗

3.对以下问题,给出自己的答案,并记录

 

Java基础知识
1.HashMap底层原理 (源码必看!!!必看!!!必看!!!)扩展:jdk1.7和1.8有什么改进?为什么长度大于8转换成红黑树?这个8怎么来的?
2.ArrayList底层原理,ArrayList和Vector的区别,LinkedList和ArrayList的区别
3.String,StringBuffer,StringBuilder的区别 扩展:String不可变有什么好处?
4.迭代器是做什么的?迭代器的fail-fast机制了解吗?主要为了解决什么问题?
8.ConcurrentHashMap的底层数据结构( 要掌握put,get的全过程,如果能对rehash有深入的理解就更好了)扩展:为什么1.8放弃了分段锁,分段锁的优缺点以及1.8的改进
9.synchronized和lock分别在什么情况下使用,使用的理由?扩展:synchronized锁升级过程
10.java中各种锁的实现和使用场景
11.面向对象的七个基本原则,能说出分别的目的吗?扩展:结合Spring框架谈面向对象设计的原则
12.java中的一些类的设计是如何体现设计模式的
13.什么是CAS算法?CAS底层做了什么?CAS可能产生什么问题?
14.知道AQS框架吗?说一下AQS的底层原理吧( 重点掌握AQS对于线程排队的过程和存储线程的数据结构)
15.如果一个线程要在其他几个线程运行完之后运行,有什么办法? (CountDownLatch或Phaser,重点掌握底层数据结构)
16.多线程在运行过程中抛出异常怎么捕获? (Future或回调函数)
17.如果想把两个线程的结果拿到进行下一步操作怎么做 (可以采用CompletableFuture,1.8的新API,可以看下如何使用)
18.年轻代出现OOM怎么处理?老年代出现OOM怎么处理?方法区出现OOM怎么处理?本地方法栈出现OOM怎么处理? (反向思考,如何让这些分区OOM)扩展:线上OOM怎么排查问题
19.ThreadLocal可以解决什么问题?具体的应用场景? (可以用ThreadLocal存储当前线程的数据库连接,分布式链路追踪中可以存放当前线程对应的链路信息)
20.ReenTrantLock中的condition有什么作用?condition的await和signal和Object的wait和notify有什么区别?
21.volatile主要解决了什么问题? (总线嗅探,高速缓存一致性协议,防止指令冲排序)扩展:指令重排序带来的问题
22.类的加载过程?如何保证我的类被指定的类加载器加载?相同的类被不同的类加载器加载了,这两个类相同吗?
23.jvm的内存模型和各种垃圾回收算法和垃圾回收器 (重点掌握CMS和G1垃圾收集器)
24.jvm内存模型 扩展:各个jdk版本的内存模型有什么变化
25.jvm的类加载机制,反射的原理以及反射的应用 扩展:如何提升反射的性能
26.java的四种引用类型?jvm如何判断这个对象可回收?finalize方法的作用?

 

计算机网络

1.三次握手和四次挥手的过程?每次发送的包的内容,客户端和服务端的状态?
2.ICMP协议的应用? (ping命令和traceRoute等)
3.TCP如何保证可靠性? (校验和,分片,超时重传,ARQ协议,滑动窗口等等)
4.如何实现UDP的可靠传输? (考虑在应用层实现,可以了解下http3.0协议)
5.https的请求过程? (如何建立ssl)
6.一次RPC调用的整个链路? (考虑三次握手负载均衡等)
7.http + restful 和 RPC的区别?各自适用的场景?
8.DNS协议用到了什么传输层协议? (一台新电脑如何获取到有效的网关地址)
9. 在浏览器中输入一个url,敲下回车之后发生的事情(考虑DNS解析,负载均衡,建立连接等等)
10.服务端出现大量timewait是什么原因导致的?(具体的解决方案)
11.http的报文结构?TCP的?IP的?
12.http协议的发展历程(1.0,1.1,2.0,3.0)

 

计算机组成原理

1.虚拟内存解决了什么问题?(分页,分段,段页的区别)
2.进程间通信的七种方式(实现原理,具体应用场景)
3.死锁产生的必要条件?如何解决死锁的问题?
4.linux的各种IO模型?(重点掌握epoll,底层结构红黑树 + 链表,能够说出为什么在管理数百万连接的过程效率还好,以及ET模式和LT模式)
5.可以学习一下shell编程
6.内核态和用户态的区别以及转换?(什么情况会转化:中断,各种中断进行分类)
7.linux底层的零拷贝技术(经历4次 -》3次 -》2次拷贝的优化历程)
8.操作系统大内核和微内核之间的区别以及各自的好处?
9.僵尸进程和孤儿进程产生的原因以及解决方式?
10.操作系统的各自调度方式

 

数据库

1.数据库的四个特性?四个隔离机制?
2.数据库索引数据结构?各种索引失效的情况?最左匹配原则
3.MySQL主从复制的原理?
4.MySQL的如何保证事务
5.MVCC底层实现
6.MySQL和Redis的区别(各自使用的场景以及原因)
7.Innodb和MyISAM的区别
8.redis的数据结构?
9.redis为什么快? (io模型 + 基于内存 + 线程模型)
10.一条sql语句的查询流程

 

Spring框架和中间件
1.Spring和Springboot的区别
2.IOC和AOP的理解
3.AOP的底层实现
4.Spring中事务传播的各种情况
5.Spring如何解决循环依赖
6.SpringCloud的各种组建
7.Spring启动流程
8.SpringBoot的SPI机制是如何实现的
9.Springboot启动流程
10.SpringMVC的工作流程
11.负载均衡如何实现 (考虑非网关的方式实现)
12.服务注册中心的工作流程

 

一些建议:

看CyC整理的答案

CyC的建议:

1.看源码建议在牛客或者github上找源码分析的文章,而不是自己盲目看

2.知识环环相扣,建议先有铺垫,比如:源码中包含大量的设计模式,不学常用的设计模式直接看,很难看懂

3.有些内容,比如常用的设计模式,在回答时最好结合Java类库中的实现,或者Spring等框架中的实现

4.按照以下步骤来整理知识,体现你对知识掌握的深度和广度

为什么存在(解决了什么问题)

基本原理

使用场景

和其它相比有什么不同

 

5.有空的话还可以把牛客常考的算法题做了。对于LRU缓存实现、修改的基因最少次数、字符匹配问题等之前不会的问题也要做,另外每次都要计时,不能使用编译器

6.背单词

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值