厦门中软国际后台开发岗(中级)社招面经

1、java 中==和 equals 和 hashCode 的区别

2、int、char、long 各占多少字节数

int\float 占用 4 个字节,short\char 占用 2 个字节,long 占用 8 个字节,byte/boolean

占用1 个字节

基本数据类型存放在栈里,包装类栈里存放的是对象的引用,即值的地址,而值存放在堆里。

3、int 与 integer 的区别

Integer 是 int 的包装类,int 则是 java 的一种基本数据类型,Integer 变量必须实例化才能

使用,当new 一个 Integer 时,实际是生成一个指向此对象的引用,而 int 是直接存储数

据的值,Integer 默认值是 null,而 int 默认值是 04、谈谈对 java 多态的理解

同一个消息可以根据发送对象的不同而采用多种不同的行为方式,在执行期间判断所引用的

对象的实际类型,根据其实际的类型调用其相应的方法。

作用:消除类型之间的耦合关系。实现多态的必要条件:继承、重写(因为必须调用父类中

存在的方法)、父类引用指向子类对象

5、String、StringBuffer、StringBuilder 区别

都是字符串类,String 类中使用字符数组保存字符串,因有 final 修饰符,String 对象是不

可变的,每次对String 操作都会生成新的 String 对象,这样效率低,且浪费内存空间。但

线程安全。

StringBuilder 和 StringBuffer 也是使用字符数组保存字符,但这两种对象都是可变的,即

对字符串进行append 操作,不会产生新的对象。它们的区别是:StringBuffer 对方法加

了同步锁,是线程安全的,StringBuilder 非线程安全。

6、什么是内部类?内部类的作用

7、抽象类和接口区别

8、泛型中 extends 和 super 的区别

<? extends T>限定参数类型的上界,参数类型必须是 T 或 T 的子类型,但对于 List<?

extends T>,不能通过 add()来加入元素,因为不知道<? extends T>是 T 的哪一种子类;

<? super T>限定参数类型的下界,参数类型必须是 T 或 T 的父类型,不能能过 get()获取

元素,因为不知道哪个超类;

9、父类的静态方法能否被子类重写?静态属性和静态方法是否可以被继承?

父类的静态方法和属性不能被子类重写,但子类可以继承父类静态方法和属性,如父类和子

类都有同名同参同返回值的静态方法show(),声明的实例 Father father = new Son();

(Son extends Father),会调用 father 对象的静态方法。静态是指在编译时就会分配内存

且一直存在,跟对象实例无关。

10、进程和线程的区别

进程:具有一定独立功能的程序,是系统进行资源分配和调度运行的基本单位。

线程:进程的一个实体,是CPU 调度的苯单位,也是进程中执行运算的最小单位,即执行

处理机调度的基本单位,如果把进程理解为逻辑上操作系统所完成的任务,线程则表示完成

该任务的许多可能的子任务之一。

关系:一个进程可有多个线程,至少一个;一个线程只能属于一个进程。同一进程的所有线程共享该进程的所有资源。不同进程的线程间要利用消息通信方式实现同步。

区别:进程有独立的地址空间,而多个线程共享内存;进程具有一个独立功能的程序,线程

不能独立运行,必须依存于应用程序中;

11、final,finally,finalize 的区别

final:变量、类、方法的修饰符,被 final 修饰的类不能被继承,变量或方法被 final 修饰

则不能被修改和重写。

finally:异常处理时提供 finally 块来执行清除操作,不管有没有异常抛出,此处代码都会

被执行。如果try 语句块中包含 return 语句,finally 语句块是在 return 之后运行;

finalize:Object 类中定义的方法,若子类覆盖了 finalize()方法,在在垃圾收集器将对象

从内存中清除前,会执行该方法,确定对象是否会被回收。

12、序列化 Serializable 和 Parcelable 的区别

区别:Serializable 在序列化时会产生大量临时变量,引起频繁 GC。Serializable 本质上使

用了反射,序列化过程慢。Parcelable 不能将数据存储在磁盘上,在外界变化时,它不能

很好的保证数据的持续性。

选择原则:若仅在内存中使用,如activity\service 间传递对象,优先使用 Parcelable,它

性能高。若是持久化操作,优先使用Serializable

注意:静态成员变量属于类,不属于对象,固不会参与序列化的过程;用transient 关键字

编辑的成员变量不会参与序列化过程;可以通过重写writeObject()和 readObject()方法来

重写系统默认的序列化和反序列化。

13、谈谈对 kotlin 的理解

特点:1)代码量少且代码末尾没有分号;2)空类型安全(编译期处理了各种 null 情况,

避免执行时异常);3)函数式的,可使用 lambda 表达式;4)可扩展方法(可扩展任意

类的的属性);5)互操作性强,可以在一个项目中使用 kotlin 和 java 两种语言混合开发;

14、string 转换成 integer 的方式及原理

1)parseInt(String s)内部调用 parseInt(s, 10)默认为 10 进制 。

2)正常判断 null\进制范围,length 等。

3)判断第一个字符是否是符号位。

4)循环遍历确定每个字符的十进制值。

5)通过*=和-=进行计算拼接。

6)判断是否为负值返回结果。



#面经##社招##中软国际##Java工程师#
全部评论
这也太顶了吧?前辈牛逼。
2 回复 分享
发布于 2021-08-08 10:43
全是基础啊
1 回复 分享
发布于 2021-08-07 08:40
真 八股
1 回复 分享
发布于 2021-08-09 10:58
外包去干嘛
1 回复 分享
发布于 2021-08-10 08:47
外包
点赞 回复 分享
发布于 2021-08-08 15:29
外包工斯
点赞 回复 分享
发布于 2021-08-25 09:00
外包公司问的都挺基础
点赞 回复 分享
发布于 2021-10-13 15:30
这不问算法吗?
点赞 回复 分享
发布于 2021-12-10 13:32
感谢前辈
点赞 回复 分享
发布于 2022-06-07 10:24

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
AI牛可乐:哇,听起来你遇到了什么挑战呢!🐮牛可乐在这里,虽然小,但是勇敢又聪明,想听听你的具体情况哦!如果你愿意的话,可以点击我的头像给我私信,我们可以一起想办法应对挑战,好不好呀?🌟🎉
点赞 评论 收藏
分享
7 80 评论
分享
牛客网
牛客企业服务