面试题整理(五)(某500-999人规模)软件公司真实面试题

面向对象都有哪些特性以及你对这些特性的理解

主要还是考对面向对象的理解
1)继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类,基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段。
2)封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已经定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治,封闭的现象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对于数据和数据操作的封装。可以说,封装就是隐藏一切可以隐藏的东西,只向外界提供最简单的编程接口。
3)多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时多态和运行时多态。如果将对象的方法视为对象向外界提供的服务,那么运行时多态可以解释为:当A系统访问B系统提供的服务的时候,B系统有多种提供服务的方式,但是一切对A系统来说是透明的。方法重载(overload)实现的是编译时多态(也称为前绑定)。

为什么选择java

      大多数人选择java可能是因为java前景好,用的人多,比较好找工作或者是面向工资编程。这些东西我并没有体会到,并且在我心里也没什么概念。

我大学里面学的第一门语言是C++,教我的那位老师是16年刚毕业的胡老师,胡老师是我计算机技术的启蒙老师,也是我大学四年见过的最负责任的老师,同作为面向对象语言的Java编程语言,容易理解省去了多重加载,指针等难以理解的概念。并且实现了垃圾自动回收,大大简化了程序设计。而且java的学习资料太多了,网络上有很多良心的博主,以及培训机构的免费的学习资料。

而且java是跨平台的,只需要准备好一个java虚拟机,它是架构在操作系统之上的,屏蔽了底层的差异。

java没有指针所以就没办法直接访问内存了。java也不容易出现内存泄露。java内置多线程的支持 ,不像其他不支持多线程的语言,需要调用操作系统的多线程功能才能实现。有特别丰富的类库,出现了很多优秀的开源社区,比如Apache和Spring。这些优秀的社区提供了很好地框架,借助这些框架不需要关注java底层的开发只需要关注业务实现。使用广泛,Java确实很多企业都在用,而且都是用在比较大的项目上,所以工作相对来说好找一点,而且最重要的是因为java开发人员比较多,所以当碰到问题上网解决比较容易。

基本数据类型

boolean,char,int,short,byte,long,double,float

switch可以判断哪些类型

int,char,boolean,enum,jdk1.8以后可以判断String类型。

StringBuilder和StringBuffer的区别

首先最本质的区别是StringBuilder是线程不安全的,StringBuffer是线程安全的,如果在单线程条件下应该使用StringBuilder因为StrBuilder的效率更好。

抽象类和接口的区别

含有abstract修饰符的class就是抽象对象,abstract不能创建实例对象。含有abstract方法定义的类必须定义为abstract Class,abstract class类中修饰的方法不必是抽象的,而且必须在子类中实现,如果子类没有实现父类的抽象方法,那么子类也必须定义为abstract类型。

接口(interface)可以说成是抽象类的一种特例,接口中所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中成员变量默认为public static final

下面比较一下两者的语法区别

1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量。
3.抽象类中可以包含有非抽象的普通方法,接口中所有的方法都必须是抽象的,不能有非抽象的普通方法
4.抽象类中的抽象方法可以是protected,public的,但是接口中抽象方法只能是public的,并且默认是public abstract类型。
5.抽象类中可以包含静态方法,接口中不能包含静态方法
6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,接口中定义的变量只能是public static final类型的,并且默认即为public static final类型。
7.一个类可以实现多个接口,但是只能继承一个抽象类。

介绍多态

所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程的时候并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例变量,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能确定。因为在程序运行的时候才确定具体的类,这样,不用修改源代码就可以让引用变量绑定到各种不同的实现类上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行的时候所绑定的代码,让程序可以选择多个运行状态,这就是多态。

Java实现多态有三个必要条件:继承、重写、向上转型。
继承:在多态中必须存在有继承关系的子类和父类。
重写:子类对于父类中某些方法进行重新定义,在调用这些方法的时候就会调用子类的方法。
向上转型:在多态中必须存有继承关系的子类和父类。

对于Java而言,它多态的实现机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。
1、基于继承的实现机制主要表现在父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为。
2、
继承是通过重写父类的同一方法的几个不同子类来体现的,那么就可就是通过实现接口并覆盖接口中同一方法的几不同的类体现的。
在接口的多态中,指向接口的引用必须是指定这实现了该接口的一个类的实例程序,在运行时,根据对象引用的实际类型来执行对应的方法。
继承都是单继承,只能为一组相关的类提供一致的服务接口。但是接口可以是多继承多实现,它能够利用一组相关或者不相关的接口进行组合与扩充,能够对外提供一致的服务接口。所以它相对于继承来说有更好的灵活性。

权限修饰符

Java中权限修饰符有4个
Private 私有的
默认(默认就是没有不写)
protected 受保护的
Public 公开的
接下来是使用这些修饰符后的范围

同类同包继承不同包
private×××
默认××
protected×
public

线程池

见我的博客线程池

设计模式

java中一般有23种设计模式
创建型模式有五种:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。
结构型模式七种:适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。
行为型模式十一种:策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介模式,解释器模式。
其实你不用每个都知道,不过可以自己在这里面找几个不会的或者不熟悉的去网上找些demo看一下,最起码面试的时候你可以有点料,最好自己写写。用咱们老祖宗的话就是:“纸上得来终觉浅,绝知此事要躬行。”

try catch finally

1、不管有没有异常,finally中的代码都会执行

2、当try、catch中有return时,finally中的代码依然会继续执行

3、finally是在return后面的表达式运算之后执行的,此时并没有返回运算之后的值,而是把值保存起来,不管finally对该值做任何的改变,返回的值都不会改变,依然返回保存起来的值。也就是说方法的返回值是在finally运算之前就确定了的。

4、finally代码中最好不要包含return,程序会提前退出,也就是说返回的值不是try或catch中的值

剩下的就是一些。。。我也不会了大家看看吧

进入公司后和期待的有偏差

转岗的话,你不会的技术方向 ,你会怎么安排

希望往javaweb还是安卓方向发展

我也不知道怎么说,我作为一个初来乍到的,这什么鬼我还没进公司呢就。。。不知道怎么说只想说现在工作难找呀,希望看到我博客的同学能知道找工作没那么难但是也绝对不像你们学校似的疫情期间97%,98%甚至100%的就业率。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值