2023届_Cyan

技术栈测试

1、学Java看的哪个资料:

  • 重载,重写,泛型懂吗? 懂

  • Java集合这块学过了吗? 学过忘了

  • HashMap源码,JVM,JUC是否看过:

2、数据结构与算法看的哪个资料:

  • 链表,栈,队列,二叉树能自己手写吗:能
  • AVL树,红黑树,线段树学过吗:没有
  • 冒泡,快速,归并排序能手写吗:不能
  • 递归,二分,贪心,回溯,动规,枚举这几种算法学过哪几种:
  • LeetCode 大概刷了多少题:

3、框架与中间件

  • servlet,cookie,session学过吗:学过忘记了
  • SSM学过了吗:学过忘记了
  • redis 学过吗:
  • SpringBoot项目做过几个:

4、MySQL看的哪些资料:

  • sql 熟练吗:否
  • 索引底层原理懂吗:不懂

5、计算机基础
* 计算机网络看什么资料:王道408
* 操作系统看什么资料:王道408
* 计算机组成原来看的什么资料:王道408

学习规划(2023.12.30)

一些链接入口

课程大纲: 所有课程大纲入口 ,PS:你要的东西,课程大纲基本都会有哈,需要学啥记得来课程大纲看看。

你的大致情况分析与规划

首先,你这边,我主要按照优先做完项目,用来写简历应付复试,不过做完这个事情,时间是绰绰有余的,所以呢,也会安排你按照找实习的路径来学,也就是八股文,算法这些的学习,这样你到时候复试上岸了,就可以很快找实习了。

具体学习安排

1、Java进阶:你有一定的Java基础,不过还是需要掌握的更加深入,直接学习 Java进阶吧,重点看一下划线的内容过就行,核心是学习集合源码,学完就差不多了。

划重点:为了学习更快,请学习的时候,按照我网站的说明来,重点看划线的那些就行,项目实战就不做了,练习也可以不做。

时间安排:建议15天完成。

2、框架与项目:按照 web学习路线整合(框架+项目) 路线学,由于你也还有时间,就系统学习一下,学完springboot之后,先做牛客论坛这个项目,之后再做电商支付,相当于做了两个,不过你想做一个其实也可以。

时间推荐:1.5个月。学完了2,就完成了复试项目了

下面是为了找实习做准备滴,可以说,下面各种原理的学习,才是最花时间也是面试最重点也是学无止尽的。

3、重学数据结构+算法:由于你如果上岸了,还有足够的时间,可以把数据结构好好实现一下,学的更加深入和扎实一些,为学算法打下编码基础。

(1)按照 数据结构与算法体系课 学一下,内容有点多,有些比较难的,注重编码,一定要跟着实现哈。

(2)之后跟着我 拿捏算法面试课程 刷,主要以简单题+中等题为主,这个比较难,当作长期战线吧。

时间推荐:数据结构需要1+个月,之后算法每周刷十几道就行。

4、核心八股文:学完 1 + 2 + 3(1),之后就来学八股文了,先系统刷一下 mysql + redis + JVM,刷完就可以按照面经来刷了

(1)、JVM入门:学习 图解JVM学习指南 ,学完后面有时间再看书,看 《深入理解Java 虚拟机》阅读及其重点章节指南

mysql=>redis:mysql 你看 MySQL原理剖析课程说明,看看能不能看懂索引的那些,如果看不懂就刷一下我提供的视频。redis 的话先去刷《redis开发与运维》:《Redis开发与运维》怎么看 + 重点章节,对应的电子书这里下载:书籍推荐
时间:1.5个月天。

5、复习:八股文学了就忘了,所以这里都有各种强化复习的。

第一轮复习(必须完成):刷高频题,按照 八股文高频题库(必看) 进行第一轮复习,核心学的差不多,就准备去投递main是了,

第二轮复习(非必需):之后按 面试突击专题学习指南(必看) 进行第二轮复习,这个时候你已经能够应付挺多八股文了,但是八股文学无止境,之后学完有时间再回归系统学习,我会给你推荐对应的书籍和专栏。

更多:学完这些,就具备面试中大厂实习了。

学习顺序

你可以先学完 1 + 2,完成了基本的任务后,后面的 3+4+5,主要是为找中大厂实习做准备的,学哇1+2,就按照下面两条线学习:

算法:3可以长期刷题

八股文:4=》5

就行先安排这么多,然后记得来每周打卡学习进度哈,也可以星球每天打卡哦,我会看的,比如像他们这样:0. 每周打卡做的比较好的成员示例,你也可以每天打卡或者星球打卡吧,我会看的

有什么问题记得随时私聊帅地

每周打卡记录

2023.1.6-1.7学习记录 本次学习是在家里进行。

类变量和类方法
1. 是同一个类所有对象共享的。
2. 在类加载的时候生成的。
3. 类变量的访问方式:在对应的权限内访问,最好使用“类名.变量”的访问方式。
4. 静态方法只能访问静态成员。普通成员既可以访问静态方法和变量也可以访问非静态变量和方法。
5. 应用场景:当该方法和变量不需要实例化访问时,便可将该成员设置为静态成员。
Main方法的使用细节
Public static void main(String[] args) {} 该语句对应各参数的细节
代码块
1. 很好的解决了一些构造器中的信息冗余问题。
2. 代码块调用优先级高于构造器。
静态代码块
1. 类的加载时机:
New一个实例时。
创建子类对象实例,父类先被加载。
直接使用类的静态成员
静态代码块只会被加载一次,与类加载的次数相同。
注:普通代码块不会因调用该类的静态成员而加载。
2. 静态代码块与静态属性的初始化根据其定义顺序而使用
其优先级本身是相同的。普通代码块的使用也类似。
3. 调用优先级:静态成员>非静态成员>构造器。
4. 构造器最前面隐含了super方法和调用普通代码块。(类加载)
5. 创建子类对象时各种成员的调用顺序。(反复品)

2023 1.8-1.9学习记录 家中

单例设计模式
1. 如何理解定义:软件运行只能存在一个实例,且只有一个取得对象的方法。
2. 饿汉式;(依托类加载机制)
构造器私有化;
类内部进行创建实例;(静态的)
提供一个返回对象的方法。(这个方法必须是公共静态方法)
思考:静态成员之间可以互相调用,但静态成员无法直接调用普通。
3. 懒汉式
仅在使用的时候创建一个对象实例(相比与饿汉式);
饿汉式是直接进行对象的创建;
使用懒汉式可以避免下面的情况;
懒汉式的大致创建步骤同饿汉式相同。
思考:如何保证单例?
4. 饿汉式可能会导致资源的浪费。(创建了对象,但没有使用的情况)
5. 对比:两种单例模式的区别是创建时机的不同;
但仅懒汉式存在线程安全问题。(后续学习解决)
Final关键字
1. 用途:希望该对象是最终版本时,即不希望某一个成员被修改,为固定的内容,可用final关键字;
2. 命名方式,必须初始化
3. Static修饰下的final对象的注意事项;
4. Final类仅不能被继承,但可以实例化;
5. Final不能修饰构造方法;
6. Final和static配合使用不会导致类加载!(与编译器优化相关)
抽象类(与重写相关)
某一个类的方法具有不确定性时,且不想直接实现时。
1. 抽象类与抽象方法二者相互依存;
2. 抽象类与子类的关系,抽象类本身可以无抽象方法;
3. 抽象方法无方法体,且不可以创建对象;
4. Abstract关键字仅能修饰类和方法。
5. 某一个类继承了抽象类后,则必须重写抽象类的所有方法。
接口(与规范相关)
1. 将一些未实现的方法封装起来以供其他的类实现;
2. 接口内的所有方法都需要实现;
3. Jdk7与jdk8接口内方法的区别:jdk8以后可以有静态方法和默方法;
4. 接口的应用场景:在接口的管理下便于开发;(接口的妙用)
5. 接口并不能被实例化;(思考原因)abstract
6. 接口中的方法仅用public修饰;
7. 抽象类实现接口可以不实现方法;(使用alt+enter快捷键实现)
8. 一个类可以实现多个接口,一个接口可以继承多个接口;
9. 接口中的属性默认:public static final 修饰;

1.11-1.13 家中学习

接口vs继承
1. 实现机制是对Java单继承机制的补充;
2. 接口与继承解决的问题不相同且接口更加灵活;
3. 继承必须是is-a的关系,接口时like-a的关系;
4. 接口在一定程度上实现代码解耦;(待后续思考)
接口规范性与代码绑定机制
接口的多态参数,多态数组和多态传递

1. 接口类型的变量可以指向实现了接口的对象实例;
2. Instanceof判断运行类型;
内部类
1. 属性、方法、构造器、代码块、内部类是类的五大成员;
2. 四种内部类:局部内部类、匿名内部类——成员内部类、静态内部类;
3. 局部内部类:定义在外部类的局部部分;(方法内且有名)
外部类只能在该方法内创建对应内部类的对象来使用;
4. 匿名内部类:满足类的性质且是一个对象;
5. 当某个类仅被使用一次时,用匿名内部类简化开发;
6. 注意编译类型与运行类型;
7. 匿名内部类的底层实现原理:外部类名$0x(x为数字);
在jdk底层创建匿名内部类后,马上创建该类的实例并且把地址返回给设置的变量;
8. 基于接口与基于类的两种匿名内部类(有参数列表与继承关系);
9. 上述参数列表仅传给对应的类的构造器;
10. 成员内部类如同外部类的普通成员一样,可以直接在外部类的方法内直接创建对象并调用;
11. 自己的思考:可以用类似单例模式的方法来使用成员内部类;
枚举
1. 是一种特殊的类,类中的内容设定为特定的有限内容且只读;
2. 自定义类实现枚举;
3. Enum关键字实现枚举(替代class);
4. 组成:常量名+(构造器实参列表);
5. 通过逗号来间隔多个常量对象;
6. 在使用enum关键字时,应将对应的常量对象写到整个enum类的最开始部分;(语法规则)
7. 使用enum关键字时默认继承Enum类;
8. 补充增强for循环的使用方法;
9. 在java单继承机制下使用enum关键字后不能再继承其他类;
10. Enum类可以实现其他接口。

2024 1.21

注解
1. 注解可以被编译,相当于代码的补充信息;
2. @Override 重写父类方法:其本质是语法校验;(编译问题),该注解只能注解方法;
3. @deprecated 表示某个程序元素过时(表示不推荐使用),该注解可以修饰诸多元素,可用作版本兼容过渡;
4. @SuppressedWarnings: 抑制编译器警告,在参数列表中可写入对应要抑制的警告类型;
5. 元注解;

异常
1. 使用try-catch机制来处理可能出现的程序错误;
2. Error与Exception
3. 运行时异常一般不做处理,编译时异常编译器要求必须被处理;
4. 异常处理方式:try-catch-finally || throw处理机制;
5. 通常将释放资源的代码放到finally中;
6. Throw处理机制(顶级处理者是JVM);
7. 在使用多个catch捕获异常时,要求子类异常写于父类异常的前边;
8. 子类在抛出异常的时候,应与父类抛出异常类型一致或为父类异常类型的子类;
9. 运行异常与编译异常的不同处理机制;
10. 自定义异常:通常继承RuntimeException类(利用默认处理机制),还有编译异常;
11. Thorw 和 Throws的区别;
12. Throws一般在方法头中处理方法的类型,throw在方法体内处理具体异常对象;


包装类和基本数据类型
1. 装箱和拆箱
2. 手动装箱 valueof方法
3. Jdk5以后可以自动装箱与拆箱;
4. 包装类相比与基本数据类型有着更多的作用和类型;
5. 补充:三元运算符是一个整体;
String类
1. 若一个类实现了Serializable接口,则该类可以串行化在网络上进行传输
2. 使用unicode编码,一个字符占来个字节;
3. String类是final类型;
4. String类型的value属性是final类型的,其地址无法修改;

发表评论

后才能评论

评论(1)

  • Cyan 训练营会员 2024-01-07 8:53 下午

    类变量和类方法
    1. 是同一个类所有对象共享的。
    2. 在类加载的时候生成的。
    3. 类变量的访问方式:在对应的权限内访问,最好使用“类名.变量”的访问方式。
    4. 静态方法只能访问静态成员。普通成员既可以访问静态方法和变量也可以访问非静态变量和方法。
    5. 应用场景:当该方法和变量不需要实例化访问时,便可将该成员设置为静态成员。
    Main方法的使用细节
    Public static void main(String[] args) {} 该语句对应各参数的细节
    代码块
    1. 很好的解决了一些构造器中的信息冗余问题。
    2. 代码块调用优先级高于构造器。
    静态代码块
    1. 类的加载时机:
    New一个实例时。
    创建子类对象实例,父类先被加载。
    直接使用类的静态成员
    静态代码块只会被加载一次,与类加载的次数相同。
    注:普通代码块不会因调用该类的静态成员而加载。
    2. 静态代码块与静态属性的初始化根据其定义顺序而使用
    其优先级本身是相同的。普通代码块的使用也类似。
    3. 调用优先级:静态成员>非静态成员>构造器。
    4. 构造器最前面隐含了super方法和调用普通代码块。(类加载)
    5. 创建子类对象时各种成员的调用顺序。