Java面试题总结

废话不多说直接开始上题当然其中的解答是自己的个人语言组织,欢迎大家指导:

1.Java的跨平台的原理

       因为Java是基于jvm(java虚拟机)实现的,而jvm就是让java语言实现跨平台的纽带。首先我们编写的java程序是点java结尾的,经过编译后会生成对应的点class字节码文件,这时还是不能跨平台使用。这时我们可以理解jvm为一个软件,他可以在不同的平台使用,因为不同平台的版本不一样,这时我们的java字节码文件就会被jvm解释成为对应的机器语言,这时就实现了java的跨平台的特点。

2.java中int占几个字节

byte:1个字节 8位 -128~127   short :2个字节 16位    int :4个字节 32位   long:8个字节 64位

float:4个字节 32 位         double :8个字节 64位

char:2个字节 16位 1个汉字

3.面向对象特征

抽象:过程抽象(相当于类的行为就是方法)和数据抽象(相当于类的属性)

继承:新类称为原始类的派生类(子类),原始类称为新类的基类(父类).派生类可以从它的父类哪里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要.因此可以说,继承为了重用父类代码,同时为实现多态性作准备.

封装:封装就是把过程和数据包围起来,对数据的访问只能通过特定的界面.如私有变量,用set,get方法获取

多态

  • 多态是指允许不同类的对象对同一消息做出响应,方法的重写,重载与动态链接构成多态性.
  • java引入多态的概念原因之一就是弥补类的单继承带来的功能不足.
  • 动态链接 -->对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将调用子类中的这个方法,这就是动态链接.

4.装箱和拆箱

简单一点说,装箱就是  自动将基本数据类型转换为包装器类型;拆箱就是  自动将包装器类型转换为基本数据类型。

装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的 xxxValue方法实现的。(xxx代表对应的基本数据类型)。

5.==和equals区别

1)对于==,比较的是值是否相等

            如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

    如果作用于引用类型的变量,则比较的是所指向的对象的地址

  2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是是否是同一个对象

    如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

    诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
6.String面试题

String内部实现了Comparable接口,有两个比较方法:compareTo(String anotherString) 和compareToIgnoreCase(String str)。

  • compareTo(String anotherString)

    与传入的anotherString字符串进行比较,如果小于传入的字符串返回负数,如果大于则返回证书。当两个字符串值相等时,返回0.此时eqauls方法会返回true。

  • 把字符串转化为字符:调用

    toCharArray()方法转化为字符数组。
  • 浅谈一下String, StringBuffer,StringBuilder的区别?

    String是不可变类,每当我们对String进行操作的时候,总是会创建新的字符串。操作String很耗资源,所以Java提供了两个工具类来操作String - StringBuffer和StringBuilder。

    StringBuffer和StringBuilder是可变类,StringBuffer是线程安全的,StringBuilder则不是线程安全的。所以在多线程对同一个字符串操作的时候,我们应该选择用StringBuffer。由于不需要处理多线程的情况,StringBuilder的效率比StringBuffer高。

  • String str = new String("Cat");

    上面一行代码将会创建1或2个字符串。如果在字符串常量池中已经有一个字符串“Cat”,那么就智慧创建一个“Cat”字符串。如果字符串常量池中没有“Cat”,那么首先会在字符串池中创建,然后才在堆内存中创建,这种情况就会创建2个对象了。

  • 为什么我们在使用HashMap的时候总是用String做key?

    因为字符串是不可变的,当创建字符串时,它的它的hashcode被缓存下来,不需要再次计算。因为HashMap内部实现是通过key的hashcode来确定value的存储位置,所以相比于其他对象更快。这也是为什么我们平时都使用String作为HashMap对象。

7.关于java中的集合排序

comparable& Comparator 都是用来实现集合中的排序的,只是Comparable是在集合内部定义的方法实现的排序,Comparator是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义Comparator接口的方法compare()或在集合内实现Comparable接口的方法compareTo().

8.关于集合(https://blog.csdn.net/feiyanaffection/article/details/81394745

Collection 接口的接口 对象的集合(单列集合) 
├——-List 接口:元素按进入先后有序保存,可重复 
│—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全 
│—————-├ ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全 
│—————-└ Vector 接口实现类 数组, 同步, 线程安全 
└——-Set 接口: 仅接收一次,不可重复,并做内部排序 
├—————-└HashSet 使用hash表(数组)存储元素 
│————————└ LinkedHashSet 链表维护元素的插入次序 
└ —————-TreeSet 底层实现为二叉树,元素排好序

Map 接口 键值对的集合 (双列集合) 
├———Hashtable 接口实现类, 同步, 线程安全 
├———HashMap 接口实现类 ,没有同步, 线程不安全- 
│—————–├ LinkedHashMap 双向链表和哈希表实现 
├ ——–TreeMap 红黑树对所有的key进行排序 

8.map集合的几种遍历方式

简单说2种,1.通过map.entry来遍历集合获取对应的key / value 。2.通过for-each遍历key和value来实现

9.跨域问题

首先理解什么是跨域,简单地理解就是因为JavaScript同源策略的限制,因为web浏览器是建立于同源策略(协议号、端口号、域名要一致)的基础上的所以就导致跨域了。跨域问题就是违背了同源策略

常见的几种解决方法就是:

  • jsonp
  • iframe跨域
  • html5中的postMessage()方法
  • 服务器代理
  • 设置cors

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2023年的高级Java面试题pdf是一份具有挑战性的资料,涵盖了许多Java相关的知识点,包括Java基础、多线程、网络编程、集合框架、JVM和Java Web等方面。这些知识点都是Java开发者必须掌握的核心知识,对于Java开发工程师来说,能够熟练掌握这些知识点将大大提高其竞争力。 首先,Java基础是任何Java程序员必须掌握的基础。Java基础包括Java语言特性、集合框架、异常处理、反射机制等方面。在2023高级Java面试题pdf中,这些知识点被涵盖在了Java基础部分,考察着面试者的基础功底。 其次,多线程和网络编程是Java开发中另外两个非常重要的方面,也是Java开发者必须掌握的技能。多线程和网络编程对于Java程序的运行性能起着至关重要的作用。在2023高级Java面试题pdf中,这些知识点也被纳入了考察范围。在这些题目中,面试者需要了解Java多线程的机制、如何避免死锁等,并掌握Java网络编程中Socket编程的知识。 最后,JVM和Java Web也是Java领域中非常重要的方面。JVM的性能优化和调优对于Java程序的运行效率有着重要的影响。Java Web则是Web开发中较为常用的技术,包括Servlet、JSP、Spring MVC等,是Java程序员必须掌握的技能。在2023高级Java面试题pdf中,这些知识点也被涵盖,需要面试者掌握JVM的调优技巧,并了解Java Web技术的原理和实现方法。 总之,2023高级Java面试题pdf是一份非常有价值的资料,对于Java开发者来说,熟练掌握其中的知识点将大大提高其竞争力。在准备Java面试时,应该认真阅读这份面试题pdf,理解其中的知识点,并进行适当的练习和总结,以做好面试准备。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值