java基础面试总结

java基础

1.排序

/*
    选择排序。
    特点:
        在内循环第一次结束,最值出现最低角标位。
    */
    public static void  selectSort(int[] arr)
    {
        for(int x=0; x<arr.length-1; x++)
        {
            for(int y=x+1; y<arr.length; y++)
            {
                if(arr[x]<arr[y])
                {
                    /*
                    int temp = arr[x];
                    arr[x] = arr[y];
                    arr[y] = temp;
                    */
                    swap(arr,x,y);
                }
            }
        }
    }


 /*冒泡排序。
    特点:相邻两个元素进行比较。
        内循环结束一次,最值出现在最后角标位。

    */
    public static void bubbleSort(int[] arr)
    {
        for(int x=0; x<arr.length-1; x++)
        {
            for(int y=0; y<arr.length-x-1; y++)
            {
                if(arr[y]>arr[y+1])
                {
                    /*
                    int temp = arr[y];
                    arr[y] = arr[y+1];
                    arr[y+1] = temp;
                    */
                    swap(arr,y,y+1);
                }
            }
        }
    }

二分查找(折半查找)

 /**
     * 二分查找
     *
     * @param arr 数据源
     * @param key 查找的数据
     * @return 在arr里的位置
     */
    private int halfSearch(int[] arr, int key) {
        int min, mid, max;
        min = 0;
        max = arr.length - 1;
        while (min <= max) {
            mid = (min + max) / 2;
            if (key > arr[mid]) {
                min = mid + 1;
            } else if (key < arr[mid]) {
                max = mid - 1;
            } else {
                return mid;
            }
        }
        return -1;
    }

2.static final

static有三种形式,静态方法,静态变量,静态代码块。
静态在随着类加载的时候就一起加载。
静态只能调用静态变量;
静态方法只能调用静态方法;
不能以任何形式引用this,super;
静态方法的调用不依附于实例对象
final
在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。
当修饰类的时候,该类不能被继承。
当修饰方法的时候,该方法不能被重写。
当修饰变量的时候,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

3.基本数据类型

类型 字节 位数
byte 1字节 8位
short 2字节 16位
int 4字节 32位
long 8字节 64位
double 8字节 64位
float 4字节 32位
char 2字节 16位
boolean 1字节 8位

4.集合

list

ArrayList 数组结构,线程不安全的,查询速度快。
LinkedList 链表结构,线程不安全,插入和删除的速度快。
vector 数组结构,线程安全。无论增删或者查询效率都很低。被ArrayList替代。

set

存入set的每个元素都必须是唯一的,因为set不保存重复元素。

HashSet 哈希表结构,为快速查找而设计,效率高
TreeSet 二叉树结构,使用它可以从set中提取有序的序列。

map

HashMap基于散列表的实现,可以存储键值对形式的数据,可以null键值,效率高,线程不安全。
LinkedHashmap 基于hashmap的结构之上,其默认获取数据的顺序是插入顺序。也可以通过构造方法设置为最近最少使用的次序(LRU)。
TreeMap基于红黑树的实现,查看数据的时候,会被排序。

5.线程

1.继承Thread
2.实现Runable接口
3.实现Callable,和Runable的区别是有回调方法。
区别 :实现Runable接口扩展性更好,因为继承只能单向继承

什么是线程?
线程是操作系统运行的最小单元;进程里包含了多个线程,他们处理不同的任务,组成了一个应用或者一个系统的整体逻辑。
sleep和wait的区别 最大的不同是在等待时 wait 会释放锁,而 sleep 一直持有锁。wait 通常被用于线程间交互,sleep 通常被用于暂停执行。
Thread.yield():让步,当一个线程执行yield()方法,证明该线程执行让步,让其他线程有可能的获取资源运行。
**Thead.join(): **加入,当一个线程执行join(),证明该线程执行加入操作,会终止当前正在运行的线程,开始执行join的线程。
Thread 优先级:Thread.currentThread().setPrority(value);value=Max_prority;Norm_priority;Min_priority;三种不同的优先等级;
Thread.setDaemon(boolean);设置当前线程为后台线程,后台线程要在start之前调用才有效。后台线程,是指程序运行的时候在后台提供一种通用服务的线程,且这种线程并不属于程序中不可或缺的部分;只要有任何非后台线程在运行,程序就不会终止。
线程池:是统一管理线程的服务对象。优点是通过控制线程的创建和销毁,节省资源,提高效率。

6.面向对象,封装、继承、多态

封装:隐藏实现细节,提高程序的复用性和维护性
继承:子类继承父类,表明子类拥有父类的属性和方法(注意是public protected修饰符的)
多态:父类引用指向子类对象
抽象类和接口的区别
抽象类是abstract修饰的类,表示该类不足以描述一个具体的事物或者对象,就叫抽象类。
接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为或者功能。

抽象类可以存在非抽象的方法和变量。接口中除了static、final变量,不能有其他变量
抽象类可以有构造器,但接口不能有。
抽象类的方法可以用public、protected和default这些修饰符,但接口只能用public修饰。

抽象类是继承关系,而接口是实现关系。

7.泛型

  • 概念:编写的代码可以被不同的对象类型所重用。泛型的本质是参数化类型。所操作的数据类型被指定为一个参数。有三种形式:泛型类、泛型方法、泛型接口
  • 出现:有许多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类。
  • 泛型好处:
    类型安全:提高java程序的类型安全,编译时期就可以检查出类型不正确导致的类型转换异常,消除强制类型转换。

泛型进阶
泛型的通配符:
<?> 无限制通配符
<? extends E> extends 关键字声明了类型的上界,表示参数化的类型可能是所指定的类型,或者是此类型的子类
<? super E> super 关键字声明了类型的下界,表示参数化的类型可能是指定的类型,或者是此类型的父类
泛型的类型擦除:当编译器对带有泛型的java代码进行编译时,它会去执行类型检查和类型推断,然后生成普通的不带泛型的字节码,这种普通的字节码可以被一般的 Java 虚拟机接收并执行,这在就叫做 类型擦除(type erasure)。
擦除的实现原理:Java 编辑器会将泛型代码中的类型完全擦除,使其变成原始类型。
当然,这时的代码类型和我们想要的还有距离,接着 Java 编译器会在这些代码中加入类型转换,将原始类型转换成想要的类型。这些操作都是编译器后台进行,可以保证类型安全。
总之泛型就是一个语法糖,它运行时没有存储任何类型信息。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 如梦朦胧 九月份的时候有了换工作的躁动,然后投了某度的Android岗位,本以为像我这种非211、985没工作经验...
    兔斯基第2号阅读 1,037评论 0 23
  • 废话不多说,自己进入今天的主题 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:...
    传奇内服号阅读 2,333评论 1 31
  • 整理一些常见的Android面试题(针对于2~3年开发经验中所遇到的问题) synchronized锁静态方法和非...
    appzy阅读 2,271评论 4 18
  • 前言 首先在文章开始之前,需要大家了解下我的情况我是普通本科,不是985,211。大学的时候玩联盟,打篮球,逃课,...
    g小志阅读 37,407评论 46 265
  • 再思宗教改革 我们不能高举宗教改革的旗子,因宗教改革不是全部。 深入研究改教历史,发现当时没有新的拓展(参考宣教史...
    丁恩慈阅读 320评论 0 3