Java开发岗面试互联网大厂冲刺,每日10题Day1
Posted Java架构师-大仙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java开发岗面试互联网大厂冲刺,每日10题Day1相关的知识,希望对你有一定的参考价值。
大家好,我是大仙!我是一个半路出家的程序员,中专毕业一直在工厂工作。也是在一次聚会上,以前的同学给我说了一句进厂这么累工资低,要不去学Java吧!听到他给我说的这些话,从此一发不可收拾…
个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、 丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!
一.JDK
和 JRE
有什么区别?
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.StringBuffer
和StringBuilder
最大的区别在于,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来实现。思路如下:
- 将字符串转为字符数组
- 调用字符数组的reversed()方法反转数组
- 再把字符数组转为字符串
代码:
//string为需要反转的字符串
private func reverse(string: String) -> String {
//字符串转为字符数组
let characters = Array(string)
//将字符数组反转,并转为字符串
let result = String(characters.reversed())
return result
}
- 方法二
思路:
- 将字符串转为字符数组
- 利用下标,从首尾两个元素开始,依次将字符数组元素进行交换。
- 交换完成后,将字符数组转为字符串
如下图:
代码如下:
//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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持!!!
以上是关于Java开发岗面试互联网大厂冲刺,每日10题Day1的主要内容,如果未能解决你的问题,请参考以下文章
Java岗大厂面试百日冲刺Day43— Shrio1 (日积月累,每日三题)
Java岗大厂面试百日冲刺 - 日积月累,每日三题Day22—— 并发编程2
Java岗大厂面试百日冲刺 - 日积月累,每日三题Day21—— Linux命令