Android 面试题(一)Java基础篇

Java基础篇前言1、Java基本数据类型2、String ,Stringbuffer ,Stringbulider的区别?3、final ,finally ,fianlize的区别?4、静态变量和成员变量的不同?5、集合框架,list,map,set都有哪些具体的实现类,区别都是什么?6、ArrayList和LinkedList有什么区别?7、HashMap和Hashtable有什么区别?8、J...
摘要由CSDN通过智能技术生成

前言

“Android工程师面试为什么要讲Java基础?
答:Android基于Java语言开发,所以Java知识也是Android开发人员必不可少的知识。Java基础不过关的话,Android开发也走不远。Java的基础以及一些常用的底层原理,肯定是要懂的。所以,面试时很多公司都会问到Java基础及原理,一般来说基础的准备是必要并且通用的,所以这部分真的很重要!”

1、Java基本数据类型

  1. 整形:byte(1个字节), short(2个字节) , int (4个字节), long(8个字节) 。

  2. 浮点型:float(4个字节),double(8个字节)。

  3. 浮点型:char(2个字节) 。

  4. 布尔型:boolean (1个字节)

2、String ,Stringbuffer ,Stringbulider的区别?

  1. String底层是一个final类型的字符数组,所以String的值是不可变的,每次对String的操作都会生成新的String对象,造成内存浪费。

  2. StringBuffer和StringBuilder都继承AbstractStringBuilder抽象类,底层是可变的字符数组。

  3. StringBuffer是在jdk1.0出现的,是线程安全的,查看源码有synchronized关键字修饰,但是执行速度慢 ,StringBuilder是jdk1.5出现的,是非线程安全的,执行速度快。

执行效率:在串行的的情况下,String 的效率最低(因为底层是不可变数组,每次操作都是新建一个Sting对象),Stringbuffer因为是同步,有syncchronzed稀释,效率相对低,StringBulider效率最高。

3、final ,finally ,fianlize的区别?

  1. final是一个关键字,用来修饰类,变量,方法.修饰的类不能被继承,但是可以继承其他的类,修饰的方法不能被子类冲重写,修饰的变量是常量,只能被赋值一次。

  2. finally是try-catch-finally语句的一个模块,正常情况下里面的代码永远会被执行,一般用来释放资源。

  3. finalize是Object类中的方法,当对象变成垃圾的时候,由GC来调用finalize()方法回收。

4、静态变量和成员变量的不同?

  1. 所属范围不同。静态变量是属于类范围的;成员变量是属于对象范围的。

  2. 存活时间不同。类的一生有着静态变量的伴随;而成员变量只能陪类走一程,对象产生的时候它就产生,而且它会随着对象的消亡而消亡。

  3. 存储位置不同。静态变量时存储在方法区里的静态区;成员变量存储在堆栈内存区。

  4. 调用方式不同。静态变量可以通过类名调用,也可以通过对象来调用;成员变量只能通过对象名调用。

5、集合框架,list,map,set都有哪些具体的实现类,区别都是什么?

  1. List:有序、可重复;索引查询速度快;插入、删除伴随数据移动,速度慢;

  2. Set:无序,不可重复;

  3. Map:键值对,键唯一,值多个;

  4. List、Set都是继承自Collection接口,Map则不是;

6、ArrayList和LinkedList有什么区别?

  1. ArrayList和LinkedList都实现了List接口

  2. ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。与此对应,LinkedList是以元素链表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)

  3. 相对于ArrayList,LinkedList的插入,添加,删除操作速度更快

  4. LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素

7、HashMap和Hashtable有什么区别?

  1. HashMap和Hashtable都实现了Map接口,因此很多特性非常相似

  2. HashMap允许键和值是null,而Hashtable不允许键或者值是null

  3. Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境

  4. HashMap提供了可供应用迭代的键的集合ÿ

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值