Java开发岗面试互联网大厂冲刺,每日10题【Day1】

大家好,我是大仙!我是一个半路出家的程序员,中专毕业一直在工厂工作。也是在一次聚会上,以前的同学给我说了一句进厂这么累工资低,要不去学Java吧!听到他给我说的这些话,从此一发不可收拾…

个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、 丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

一.JDKJRE 有什么区别?

1、面向人群不同:

  • JDK是面向开发人员使用的SDK。
  • JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者。

2、重要程度不同:

  • JRE的地位就象一台PC机一样,编写的Java程序必须要JRE才能运行。只要你的电脑安装了JRE,就可以正确运行Jav a应用程序。

3、安装位置不同:

  • 如果安装JDK,电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\j2re1.4.1_01 目录下。
  • 如果安装JRE,会在 C:\Program Files\Java 目录下安装唯一的一套JRE。

扩展资料:

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

JDK包含的基本组件包括:

  • javac – 编译器,将源程序转成字节码
  • jar – 打包工具,将相关的类文件打包成一个文件
  • javadoc – 文档生成器,从源码注释中提取文档
  • jdb – debugger,查错工具
  • java – 运行编译后的java程序(.class后缀的)
  • appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
  • Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
  • Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
  • Jconsole: Java进行系统调试和监控的工具。
  • JRE是Java Runtime Environment缩写,指Java运行环境,是Sun的产品。运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

注意由于Microsoft对Java的支持不完全,请不要使用IE自带的虚拟机来运行 Applet,务必安装一个JRE或JDK。

二.==equals 的区别是什么?

举个简单的例子,说明== 和 equals 的区别

操作方法:



特别提示

注意,我们平常使用的字符串的比较都是使用equals进行的。

三.两个对象的 hashCode()相同,则 equals()也一定为true,对吗?

不对,两个对象的 hashCode() 相同,equals() 不一定 true。代码示例:

String str1 = "精彩";
String str2 = "笔记";
System. out. println(String. format("str1:%d | str2:%d", str1. hashCode(),str2. hashCode()));
System. out. println(str1. equals(str2));

执行的结果:str1:1179395 | str2:1179395 false

代码解读:很显然“精彩”和“笔记”的 hashCode() 相同,然而 equals() 则为 false,因为在散列表中,hashCode() 相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。

四.final 在 java 中有什么作用?

final可以修类

  • 修饰类时:意思是修饰类为最终类,任何类不能再继承它.
  • 修改函数时:意思是该方法在类里是最终方法,继承它的方法不能去重写它.
  • 修饰变量时:意思是被修饰的变量是常量或者叫终态变量,一旦初始化后就不能再改变变量的值.

五.java 中的 Math.round(-1.5) 等于多少?

math.round(-1.5)等于-2

注意,这里没有写保留小数的位数的话,VB.net程序默认是保留到整数位。
在VB程序中Round函数返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。

  • =ROUND(3.19, 1) 将 3.19 四舍五入到一个小数位 (3.2)
  • =ROUND(2.649, 1) 将 2.649 四舍五入到一个小数位 (2.6)
  • =ROUND(-5.574, 2) 将 -5.574 四舍五入到两小数位 (-5.57)

六.String 属于基础的数据类型吗?

答案:不是

基本数据类型包括:byte,short,int,long,float,double,boolean,char.

而String是类代表字符串,属于引用类型,所谓引用类型包括:类,接口,数组…

七.java 中操作字符串都有哪些类?它们之间有什么区别?

操作字符串的类有:String、StringBuffer、StringBuilder。

1.String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。

2.StringBufferStringBuilder最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。

八.String str="i"String str=new String(“i”)一样吗?

不一样,因为内存的分配方式不一样。String str=”i”的方式,java 虚拟机会将其分配到常量池中;而 String str=new String(“i”) 则会被分到堆内存中。

九.如何将字符串反转?

  • 方法一

用swift实现字符串反转,第一想到的便是利用Swift的api来实现。思路如下:

  1. 将字符串转为字符数组
  2. 调用字符数组的reversed()方法反转数组
  3. 再把字符数组转为字符串

代码:


//string为需要反转的字符串
private func reverse(string: String) -> String {
    //字符串转为字符数组
    let characters = Array(string)
    //将字符数组反转,并转为字符串
    let result = String(characters.reversed())
    return result
}
  • 方法二

思路:

  1. 将字符串转为字符数组
  2. 利用下标,从首尾两个元素开始,依次将字符数组元素进行交换。
  3. 交换完成后,将字符数组转为字符串

如下图:


代码如下:


//string为需要反转的字符串
private func reverse(string: String) -> String {
    //将字符串转为字符数组
    var characters = Array(string)
    //定义用来交换的下标。从第0个元素,和最后一个元素开始
    var begin = 0
    var end = characters.count - 1
    //利用数组下标,循环交换数组前后的元素。直到begin大于等于end
    while begin < end {
        //交换元素
        let tempBegin = characters[begin]
        let tempEnd = characters[end]
        characters[begin] = tempEnd
        characters[end] = tempBegin
        //一对元素交换完成之后,begin加1,end减1。开始交换下一对元素
        begin += 1
        end -= 1
    }
    //所有元素交换完成后,将字符数组转为字符串
    let result = String(characters)       
    return result
}
  • 方法三

思路:

利用while循环,从字符串最后一个字符开始从后往前截取,每次截取一个字符。然后依次拼接,最终成为一个新的字符串。

代码如下:

//string为需要反转的字符串
private func reverse(string: String) -> String {
    //字符串截取次数
    var i = string.count - 1
    //定义新的空字符串
    var result = ""
    //遍历字符,直到i=0
    while i >= 0 {
        //从第i个元素截取,每次截1个字符
        let str = string.dropFirst(i).prefix(1)
        //拼接字符串
        result = result + str
        //截取完成一个之后,进行减1操作,截取下一个
        i -= 1
    }
    return result
}
  • 方法四

此方法为第三种方法的变种,不同的是将字符串截取变为用数组下标获取。

思路:

将字符串转为字符数组。然后循环遍历字符数组,从字符数组最后一个元素开始依次取出字符,然后拼接成一个新的字符串。

代码如下:


//string为需要反转的字符串
private func reverse(string: String) -> String {
    //将字符串转为字符数组
    let characters = Array(string)
    //定义新的空字符串
    var result = ""
    //从数组最后一个元素开始遍历元素
    for i in 0 ..< characters.count {
        let c = characters[characters.count - i - 1]
        //取出字符后,依次拼接
        result = result + String(c)
    }
    return result
}
  • 方法五

方法五也是方法三的变种。其实与方法四思路基本相同,不同的是利用了swift本身的方法进行遍历。

代码如下:


//string为需要反转的字符串
private func reverse(string: String) -> String {
    //将字符串转为字符数组
    let characters = Array(string)
    var result = ""
    //从characters.count - 1 至0 之间的整数,每次-1
    for i in stride(from: characters.count - 1, through: 0, by: -1) {
        //依次从字符数组中取出元素,并拼接成字符串
        let c = String(characters[i])
        result = result + String(c)
    }
    return result
}

总结:

  • 第一种思路利用swift语言本身的api将字符数组进行反转,然后将反转后的数组再转为字符串
  • 利用数组下标,将字符数组元素进行交换,达到反转的目的
  • 用字符串截取或者遍历字符数组,倒序获取字符。然后拼接成字符串

十.String 类的常用方法都有那些?

1.用字符数组value创建一个string对象
2.用字符数组以x开始的n个字符创建一个string对象
3.获取字符串长度
4.获取字符串某一位置的的字符
5.获取字符串的子串等…

总结

2021整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等:Java学习资料,面试题册PDF

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持!!!

  • 18
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值