Android程序员面试总结---Java篇

本文深入讲解Java中的核心概念和技术,包括基本数据类型、集合框架、线程管理、单例模式、HashMap内部机制、内存管理及垃圾回收机制。此外,还探讨了值传递与引用传递的区别以及重载与重写的基本原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

老生常谈

1. Java的八种数据类型以及所占用的字节
byte(1)  boolean(1) char(2) short(2)int(4) float(4) double(8) long(8) 
   String是引用数据类型,是final类,不能被继承;

2. 集合
    List是存储单列集合,是有序的,不可重复,;
    List常用的实现类分为:ArrayList、LinkedList等;
    ArrayList:底层的数据是数组,线程不安全,因为每个元素都具有索引,所以查询快,增删慢;
    LinkedList:底层的数据结构是链表,线程不安全,增删快,查询慢;特殊方法如下:
addFirst(),removeFirst(),getFirst()
(1)想要线程安全的集合怎么办?
        在集合中Vector和HashTable线程是安全的,因为在源码中这两个集合都有synchronized关键字,Collections工具类提供了方法,可以将集合变成线程安全的,代码如下:
Collections.synchronizedList(list) 
			Collections.synchronizedMap(m) 
			Collections.synchronizedSet(s)
3.  线程创建的方式
(1)继承Thread类:线程和线程任务是绑定在一起的,创建了四个线程就等于创建了4份资源;
(2)实现 Runnable接口,重写Run方法:线程和线程任务进行了分离,还可以继承其他类;
线程池可以通过Java中的Semaphore来控制,阻塞多个线程与释放多个线程;线程通过semaphore.acquire()方法获取 permit,如果当前线程有permit,则分配给该线程,如果没有则阻塞该线程,直到semaphore通过release()方法释放permit允许的线程数。

4.  手写单列模式:懒汉线程安全
public class Singleton {  
    private static Singleton instance;  
    private Singleton (){}  
    public static synchronized Singleton getInstance() {  
    if (instance == null) {  
        instance = new Singleton();  
    }  
    return instance;  
    }  
} 
5.  HashMap:
     源码底层是由哈希表数据结构组成,可以存null键、null值,代替了HashTable。一次存一对元素。
     存:put(key,value)
     取:get(key,value)

6.  堆内存和栈内存
    堆内存:线程共有的。由程序员手动分配释放,存放的是由new创建的对象和数组;
    栈内存:每个线程私有的,由编译器自动分配释放,存放的是局部变量的值

7.  垃圾回收机制的两种方式
   (1)采用标记计数的方法:
            给内存中的对象打上标记,对象被引用一次+1,被释放一次-1,当为0的时候就会被回收。
    
8.  值传递与引用传递的区别 
     在Java中只有值传递!经常看到对对象的传递,似乎可以改变对象当中属性的值,但实际上这个传入函数的值是对象引用的
     拷贝,所以传递的还是按地址值传递的;

9.  重载与重写的区别
     重载:在同一个类中,可以具有相同的方法名,但是参数类型和参数个数至少有一个是不同的;
     重写:子类继承父类的方法,返回值类型、数据类型和参数个数必须相同,子类方法不能缩小父类方法的访问权限,只能大                   于;子类抛出的异常也不能大于父类; 父类方法被定义为final时,子类不能重写;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值