java后端开发面试技巧

java后端开发面试技巧


前言

众所周知,Java后端开发人员的生存环境可谓是与以前挺不一样的,以IT行业发展来说,在十几年前的时候,IT行业的技术人才是稀缺的,程序员最初的招聘行情,只要你会敲“Hello world”、有些java基础,会点技术,知道一些开源框架,能做出点东西,就能入职月薪过万的大厂岗位。可是现在不一样了,竞争人数多了,压力自然就大了许多,你需要懂得东西也得多一点。

一、必考的面试问题?

1、java中的八种基本数据类型是:

byte;short;int;long;float;double;char;boolean主要考你string在不在8种基本数据类型之中,不在。(嘿嘿,被你小菜鸟装到了)

2、java面向对象的三个特征?

1.封装性:它是将类中的一些隐私数据隐藏在类的内部,并且让其无法被外界访问和修改

2.继承性:子类可以通过继承来接受父类所有的公有的成员变量和方法(public修饰符)、受到保护的成员变量和方法protect修饰符)、默认的成员变量和方法

3.多态性:程序在运行过程中,同一类型在不同那个条件下表现不同的结果。
封装性体现方式:用private修饰符修饰的成员变量和成员方法,外界无法通过创建该类对象的方法对其中的私有变量进行修改。私有化属性之后,通过对外提供setter和getter方法来使外界访问属性,也可以通过对外开放接口,控制程序中属性的访问级别。

封装的目的就是增强安全性,外界只有通过提供的外部接口才能访问类的私有成员和属性。

关于继承,java中一个类只能直接继承一个父类(可以实现多个接口),并且只能继承访问非私有(private)的属性和方法。子类可以通过重写,来改变父类中方法的具体内容,方法的命名必须和父类中的方法相同。

继承的主要目的就是代码复用,当父类中已经有所需要的方法或属性时,新创建的子类只要新添新的方法与属性,而无需重新定义父类的方法或属性。

多态可以分成两种形式:设计时多态和运行时多态

设计时多态:重载
运行是多态:重写/覆盖

重载(Overloading)
重载发生在本类,方法名相同,参数列表不同,与返回值无关,只和方法名,参数列表,参数的类型有关.
重载(Overload):首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不同。

(1)方法名必须相同

(2)方法的参数列表一定不一样。

(3)访问修饰符和返回值类型可以相同也可以不同。

其实简单而言:重载就是对于不同的情况写不同的方法。 比如,同一个类中,写不同的构造函数用于初始化不同的参数。

重写(override)
一般都是表示子类和父类之间的关系,其主要的特征是:方法名相同,参数相同,但是具体的实现不同。

重写的特征:

(1):方法名必须相同,返回值类型必须相同

(2):参数列表必须相同

(3):访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。

(4):子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。

(5):构造方法不能被重写,

简单而言:就是具体的实现类对于父类的该方法实现不满意,需要自己在写一个满足于自己要求的方法。

多态的主要目的是增强代码的灵活性,可以在特定的情况下使用特定的方法。

java应该尽量减少继承关系,来降低耦合度,使用多态时,父类在调用方法时,优先调用子类的方法,如果子类未重写,则再调用父类的方法

多态的好处
允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主要有以下优点:

可替换性:多态对已存在代码具有可替换性.
可扩充性:增加新的子类不影响已经存在的类结构.
接口性:多态是超类通过方法签名,向子类提供一个公共接口,由子类来完善或者重写它来实现的.
代码中如何实现多态

3、接口和抽象类你了解吗?

(1)抽象类和接口都不能直接实例化,如果实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
(2)抽象类要被子类继承,接口要被类实现。
(3)接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现
(4)接口里定义的变量只能是公共的静态常量,抽象类中的变量是普通变量。
(5)抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
(6)抽象方法只能申明,不能实现,接口是设计的结果,抽象类是重构的结果
(7)抽象类里可以没有抽象方法。
(8)如果一个类里有抽象方法,那么这个类只能是抽象类。
(9)抽象方法要被实现,所以不能是静态的,也不能是私有的。
(10)接口可继承接口,并可多继承接口,但类只能单根继承。
在这里插入图片描述

4、 什么是异常?

程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止。在Java中即,Java在编译或运行或者运行过程中出现的错误。

Java提供了更加优秀的解决办法:异常处理机制。

异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。
Java中的异常可以是函数中的语句执行时引发的,也可以是程序员通过throw 语句手动抛出的,只要在Java程序中产生了异常,就会用一个对应类型的异常对象来封装异常,JRE就会试图寻找异常处理程序来处理异常。

Java异常机制用到的几个关键字:try、catch、finally、throw、throws。

try – 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。
catch – 用于捕获异常。catch用来捕获try语句块中发生的异常。
finally – finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。
throw – 用于抛出异常。
throws – 用在方法签名中,用于声明该方法可能抛出的异常。主方法上也可以使用throws抛出。如果在主方法上使用了throws抛出,就表示在主方法里面可以不用强制性进行异常处理,如果出现了异常,就交给JVM进行默认处理,则此时会导致程序中断执行。
产生异常的原因:

用户输入了非法数据。
要打开的文件不存在。
网络通信时连接中断,或者JVM内存溢出。
这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。

三种类型的异常:

检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

5、你对集合框架了解多少?

点击集合框架详细说明

二、问的不会咋办?

1、情况一:了解过一点

记住不要说不会,既然了解过一点,你就可以运用你所学的知识和你了解的东西结合一下,想方设法的圆过去,不要让他知道你不会,毕竟一般的问题没有特别标准的答案,差不多就行,面试官也是想问你你了解多少。

2、情况二:真是一点也不会

那就看你语言表达能力了,厉害的面试者可以直接可以扯开这个问题,自问自答一个新问题,不要太直接。你可以这么说,我不是很了解,但是我知道…再谈一个与之相关一点的问题,即使你没答出来,但面试官也能看出来你的反应能力挺不错的,面试官就不喜欢你不会,但也不说话,说也不会的。

三、总结

1、专业之外的其他问题(hr)?

你对加班有啥看法?
你的家庭情况?
你评价你的性格?
你理想的城市?(问到这你八九不离十了,你得知道就业城市的消费水平)
你期望的工资?(本科专业应届生北上广应该1w起步,南京、青岛这样的城市也得7000多,试用期工资不低于正常工资的80%的)
三方协议问问导员?
你还有什么问题?
问一问有宿舍、食堂没,环境挺重要的影响心情的,五险一金等等多问几个

2、博主的祝福

技术过硬,不惧一切。机会永远垂青于有准备的人。不要两眼都看别人,请留一只眼看自己;不要两眼都看远方,请留只眼看眼前,因为绊脚石往往就在自己面前!拼搏着你的拼搏,快乐着你的快乐!若不给自己设限,则人生中就没有限制你发挥的藩篱。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山鸟同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值