JAVA语言方面
考完出来心情挺淡定的,但是一和同学讨论,感觉自己好多好多都错了
前面是笔试经验,后面是面试经验。重点在后面
1.overload & override
- 首先是一个论述题,麻了!overload和override的区别
我连这两个是什么都不知道,因为接触到的(无论是上课,还是自学的书),都没见过,或者说注意到这两个单词,直到和同学一说,我才知道原来这两个就是 重载 和重写。我很纳闷为什么重写不用overwrite呢= =
好气啊
overload:方法的重载就是在同一个类种允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可。重载条件:
- 参数类型不同,构成重载
- 参数个数不同,构成重载
- 参数顺序不同,构成重载
虽然在方法重载中可以使两个方法的返回类型不同,但只有返回类型不同并不足以区分两个方法的重载,还需要通过参数的个数以及参数的类型来设置。
override:重写(还可以称为覆盖)就是在子类中将父类的成员方法的名称保留,重写成员方法的实现内容,更改成员方法的存储权限,或是修改成员方法的返回值类型。
在继承中还有一种特殊的重写方式,子类与父类的成员方法返回值、方法名称、参数类型及个数完全相同,唯一不同的是方法实现内容,这种特殊重写方式被称为重构。
注:重写父类方法时,修改方法的修饰权限只能从小的范围到大的范围改变
2.子类重写父类的方法
谈到重写,就又想到了道选择题,又错了= =
子类重写父类的方法还可以修改方法的返回值类型,但是,这种重写方式需要遵循一个规则,即重写的返回值类型必须是父类中统一方法返回值类型的子类
- 正确
public class overRide {
public static void main(String[] args) {
SubParent a = new SubParent();
System.out.println(a.try1());
}
}
class Parent{
public Parent try1() {
return new Parent();
}
}
class SubParent extends Parent{
public SubParent try1() {
return new SubParent();
}
}
- 否则会产生错误
public class overRide {
public static void main(String[] args) {
SubParent a = new SubParent();
System.out.println(a.try1());
}
}
class Parent{
public int try1() {
return 4;
}
}
class SubParent extends Parent{
public double try1() {
return 5;
}
}
3.实例化子类对象时父类构造方法
在实例化子类对象时,父类无参构造方法将被自动调用,但有参构造方法并不能被自动调用,只能依赖于super关键字显示地调用父类的构造方法。
- 错误
public class ex3 {
int a;
ex3(int a){
this.a = a;
System.out.println("调用父类构造函数");
}
public static void main(String[] args) {
child a = new child();
}
}
class child extends ex3{
child(){
System.out.println("调用子类");
}
}
- 正确
public class ex3 {
int a;
ex3(int a){
this.a = a;
System.out.println("调用父类构造函数");
}
public static void main(String[] args) {
child a = new child(2);
}
}
class child extends ex3{
child(int a){
super(a);
System.out.println("调用子类");
}
}
4.二叉树遍历
然后一道就是二叉树遍历,就写了个二叉树出来,而且还没写全。网上查了下,主要方法有递归法和堆栈法嗯,是这样的:
Animationer–Java实现二叉树先序,中序,后序遍历
注意:在企鹅电话面试的时候,也说了个二叉树的遍历,但是这里和上面的二叉树类的实例化不同,想想,好像的确企鹅面试官说得在理。一棵树,当然先从根节点开始往下来实例化,中间左右节点的增加可以用二叉树类的addr、addl等方法去增加子树;否则的话,当一棵树过于庞大,例如n=10000这样,从叶子结点开始的话,就会很麻烦,不如直接从根节点开始,然后有哪个需要存储的话,就add哪个结点。而且,二叉树是链式结构,链式结构重要的是存储的容量,以及内容可以动态变化。所以建二叉树,从根节点建比较好。
5.字符串转换成整数
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数
public class solution {
public static int StrToInt(String str) {
int result = 0;
int len = str.length();
if(len <= 0)
return 0;
int i = 0;
int flag = 0;
if(str.charAt(i) == ' ')
{
i++;
}
if(str.charAt(i) == '+')
{
flag = 1;
i++;
}
else if(str.charAt(i) == '-')
{
flag = -1;
i++;
}
while(str.charAt(i) != '\0')
{
if(str.charAt(i) >= '0' && str.charAt(i) <= '9')
{
result = result * 10 + (str.charAt(i)- '0');
i++;
}
else{
result = 0;
break;
}
}
if(flag == -1)
result = -result;
return result;
}
public static void main(String[] args) {
System.out.println(solution.StrToInt(" -18967561\0"));
}
}
微调了一下,因为不知道他用的是不是C还是什么语言,直接str[]的,我就改了一下,变成Java形式。
6.垃圾回收
垃圾回收器基本原理,垃圾回收器可以马上回收内存吗,怎么主动通知虚拟机进行垃圾回收
参考Thinking in Java
- Java有垃圾回收器负责回收无用对象占据的内存资源。
- 假定你的对象(并非使用new)获得了一块“特殊”的内存区域,由于 垃圾回收器只知道释放那些经由new分配的内存 ,所以它不知道该如何释放该对象的这块“特殊”内存。
- Java允许在类中定义一个名为 finalize(),它的工作原理“假定”是这样的:一旦垃圾回收器准备好释放对象占用的内存空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存
7.BOXING & UNBOXING
数据分为哪两类,装箱和拆箱。
wrapper class 包装类
计算机基础方面
1.网络七层结构
网络的七层结构,每层的应用等。
2.IP/TCP协议
各类协议的作用
2020.4.10
面试经验
时隔多日再来更新
秋招10月中后旬签了杭州一个互联网金融公司,然后就不再找了。总共是得了7个offer,有小公司也有大公司,签了之后也陆陆续续来了不少电话问我这边的情况,如果找的话估计还有得签。
前面讲的是技术,后面主要讲讲经验
笔试的话,主要是刷力扣题和牛客题,完成各类算法型、应用型题目。
面试,其中项目经验尤为重要,9月初面的华为,基础还好,但是就是没有项目经验,导致面试官没啥可以问了,然后就疯狂深究底层和基础和算法等等等,被虐得一败涂地。后来下定决心一定要做个项目出来。
项目从9月初做到10月初,完全自己想自己构造自己实现的项目。到签了之后,也还是只完成一大半的功能,没有完善、没有上线。但仍靠这个项目得了不少offer。
项目
- 关于项目的几点:
- 能尽早做就尽早做,当然要做和要找的工作相关的项目
- 最好自己想自己构思,就算想不出也能参考现有的去完成,多发现身边的东西,身边缺什么,就可以做什么。
- 如果是自己想的,当然最好,如果网上抄的【非常不建议,群面的时候遇到过几个就网上抄抄来的,被疯狂怼】,一定要有自己的改动,要有自己的亮点
- 做这个项目主要用了什么方面的知识,主要用了什么技术,要及时更新下来。
- 每次遇到的困难都要记载下来,然后用了什么方法去解决。
- 项目最好能展示出来,我做的一个app,就能很轻易的向面试官展示,如果你做的网页,或者应用什么的,也可以用图片的方式展示给面试官看。
HR面以及终面
项目这点可以从一面说到终面,所以说项目很重要。可以凭借项目的特点、知识点以及一些基础的对应方向知识点,跟一面面试官扯过去。但是别以为一面过后,HR面、终面就稳了,曾经试过HR面被刷、终面被刷。
- 下面是几点建议:
- 气势,气质要hold住,要有宠辱不惊的态度,这样就会给面试官一种【哇,这人很稳啊,的气质】,当然这是针对技术类型的喔,非技术类型的我也不知道。
- 一面过后,你就得查查这个公司了,首先百度,查下这公司主要是做什么的,主要的发展方向、发展地点、最近的动态等。然后,可以上微信小程序offershow或者直接百度,查这个公司的薪资,这就方便HR或者主管问你期望薪资的时候,你可以往公司给的凑。
- 要有礼貌,有气势有气质不代表没有礼貌,首先仪容得好,我估计我终面被刷的很大原因就是当时突然想留胡子,然后一堆胡子像个大叔一样- -,给了主管比较差的印象。然后出入敲门或者关门,打招呼之类的,当然得做好。
- 然后要好好考虑加班问题,终面这个,挺多面试官都问我对加班怎么看,个人觉得如实回答吧,因为如果实在不喜欢加班的话,到时候去了公司也是折磨啊。还是得看个人情况。我的一惯回答就是:我对加班无所谓啊,但年轻人就应该拼一点啊,年轻不拼老了怎么拼。
现在特殊时期,春招也差不多尾声了,希望没找到工作的各位早日找到吧!