栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于图灵JAVA一百道面试题总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于图灵JAVA一百道面试题总结

https://www.bilibili.com/video/BV1Eb4y1R7zd?from=search&seid=10716683573082248310&spm_id_from=333.337.0.0https://www.bilibili.com/video/BV1Eb4y1R7zd?from=search&seid=10716683573082248310&spm_id_from=333.337.0.0

 上图是面试题链接

1.什么是面向对象:

        ①说倒面向对象就不得不说面向过程,这里我举一个例子;我需要去洗衣服。

如果是用面向过程的思想,那么就应该是: 我打开洗衣机,放衣服,关闭洗衣机,开始洗衣服。

如果是用面向对象的思想,那么就应该是: 人:打开洗衣机,放衣服,关闭洗衣机;洗衣机:洗衣服。

两者的区别是:面向过程更注重事情的顺序与步骤,而面向对象更注重事情的参与者与各自需要完成的事情,所以面向对象更加容易维护,扩展与复用。

       ②面向对象有三个特点:封装,继承,多态;

封装是指:内部细节对外部的调用透明,外部调用不需要修改与知道内部的实现,保证数据的安全。

继承是指:子类继承父类,子类有共性的方法直接使用父类,不需要自己再定义,只需要扩展自己的个性化就可以了。

多态是指:基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同。

2.JDK,JRE,JVM的区别和联系:

 JDK:java开发工具包  (开发人员使用)

JRE:java运行时环境   (提供给java程序用户使用)

JVM:java虚拟机

3.==与equals

 ==比较的是栈中的值,基础类型的变量值,引用类型比较的是引用地址;

equals默认没有重写的情况下与==没有区别,但在string类中进行了重写,内部实现是将字符一一取出进行比对。

4.final

修饰类:表示类不可被继承

修饰方法:表示方法不能被子类覆盖,但是可以重载

修饰变量:表示常量,不可修改

5.string,StringBuffer,StringBuilder的区别以及使用场景

string 是final修饰的,不可变,每次操作都会新生成一个string对象,对内存造成负担

stringBuffer和stringBuilder都是在原来的对象上进行操作,

stringbuffer线程是安全的,stringbuilder线程不安全,

性能:stringbuffer>stringbuilder>string 。

使用场景:多线程:striungbuffer,经常改变字符串使用stringbuilder,没有其他要求用string

6.重载和重写的区别  

重载:发生在同一个类中,方法名相同,参数类型不同,个数不同,顺序不同,

重写:发生在父子类中,方法名,参数列表必须相同返回值范围小于等于父类,如果父类访问修饰符是private则不能重写该方法 

7.接口与抽象类

①抽象类可以存在普通成员方法,而接口只能存在 public abstract 方法

抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final 类型的

抽象类只能继承一个,接口可以实现很多个

②接口设计的目的是约束类行为的有无,但不对如何实现进行限制

抽象类的目的是代码复用

使用场景:当你关注一个事物的本质的时候,用抽象类。当你关注一个操作的时候,用接口。

8.List和Set的区别

List:有序,可重复,允许多个null元素,可以使用iterator取出所有元素逐一遍历,可以使用get(index)获取指定下标取出数据

Set:无序,不可重复,最有允许有一个null元素,取元素只能使用迭代器进行取出

9.hashcode与equals

hashcode()的作用是获取一个哈希码,散列码,是一个int类型的整数,哈希码的作用是确定该对象在哈希表中的索引位置 

10.ArraryList和linkedList的区别

ArrayList:基于动态数组,在内存中需要连续的内存空间进行存储;存在扩容机制,在数组超出存储长度会进行扩容,创建新数组,并将旧数组数据复制到新数组中。ArrayList和linkedList集合有一个误区,普遍认为ArrayList的插入效率比linkedList低,因为涉及到扩容和数据复制。不过当ArrayList使用尾插法和指定出售长度得当,效率会大大高于linkedList。

linkedList:基于链表,可以存储分散的内存中,适合做新增和删除操作。不适合做查询:因为在linkedList底层,每增加一个元素就会新增一个node。当遍历的时候,需要从第一个元素开始遍历。而且如果使用元素索引返回元素,如果结果为空,会将整个集合进行遍历,非常影响性能。

11.HashMap和HashTable的区别?底层实现是什么?

区别:

①HashMap方法没有synchronized修饰,线程非安全,HashTable线程安全;

②HashMap允许key和value 为null,而HashTable不允许

底层实现:数组+链表实现

jdk1.8开始 链表高度到8,数组长度超过64 链表转为红黑树 元素以内部类Node节点存在

计算key的hash值,二次hash然后对数组长度取模,对应到数组下标;

如果没有产生hash冲突,则直接Node存入数组

如果产生hash冲突,先进行equals比较,相同则取代该元素,不同,则判断链表高度插入链表,链表高度达到8,并且数组长度到64转变为红黑树,长度低于6则将红黑树转为链表

key为null,存在下标0 的位置

数组扩容  

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/735042.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号