1. Vector, ArrayList, LinkedList的区别

  Vector:①长度可变,以类似数组的形式存储于内存中,线程安全(同步),因为其大部分方法都有synchronized 关键字,正因为是同步的,所以进行频繁的数据操作时,必然会导致性能的下降。

      ②当增加的元素长度超过Vector 长度时,增加原来一倍的长度。

      ③如果是单线程应用,推荐使用ArrayList 来代替Vector 效率更高。

      ④如果是多线程应用,可以使用Vector 来代替ArrayList 实现同等功能,且能保证数据一致性。

  ArrayList:①长度可变,以类似数组的形式存储于内存中,线程不安全(异步),正因为是异步的,所以在多线程环境下使用是其常用方法是不安全的,如果一定要在多线程环境下使用,应该使用Colletions类中的静态方法synchronizedList() 对ArrayList 进行操作。例如:

List list = Collections.synchronizedList(new ArrayList<>());

       ②当增加的元素长度超过ArrayList 长度时,增加原来50% 的长度。

       

  LinkedList:①以双向链表存储于内存中,线程不安全(异步),正因为是异步的,如果在多线程环境下使用它,用Colletions类中的静态方法synchronizedList() 对 LinkedList进行操作。例如:

List list = Collections.synchronizedList(new LinkedList(...));

         ②因为是双向链表,LinkList 可以很方便在链表头或者链表尾插入数据,或者在指定结点前后插入数据,所以LinkList 的插入效率高于ArrayList ,但也因为是双向链表,所以查询效率低于ArrayList。

2. static块,构造块,构造函数的执行顺序

  查看案例

3. 重写override 跟重载overload 的区别

  重写是在子类中完全覆盖父类的方法,且方法返回值、方法名、方法参数、方法参数类型跟父类的完全一样,子类抛出的异常应该等于或者少于基类

  重载是类的内部可以允许有两个同名字的方法,但方法的参数个数或者参数类型不一样,即可称之为重载。例如:

①:

void func1(int a, int b)
void func1(int a, float b)

②:

void func1(int a, int b)
int func1(int a, int b)

以上两种情况可以称之为重载,但下面这种情况不可以称为重载,且写法是错误的,例如:

int  getCount(int a , int b)
void  getCount(int a, int b)

调用时,两个参数传进去,但是返回的是int 呢?还是void 呢?所以这种写法是不存在的,即使写了编译器也无法通过。

4. String,StringBuilder,StringBuffer三者的区别

①运行速度:StringBuilder > StringBuffer > String

  因为String 一创建就是字符串常量, 而其他两者为字符串变量

②StringBuilder是线程不安全的,而StringBuffer,String是线程安全的

  查看详细解释

5. synchronized的用法与区别

①作用于类的普通方法跟代码块,作用一样,取得的锁是对象。

②作用于类的静态方法,取得的锁是类,所以即使多线程操作的对象不一样,但方法是静态的,所以还是同步的

③作用于类,取得的锁是类,跟②是一样的。

  查看详细解释

6. 单例模式的任意一种写法

class Singleton {

    private final static Singleton INSTANCE = new Singleton();

    public static Singleton getInstance(){
return INSTANCE;
}
}

(单例模式的8种写法参考)

7.考Java重载方法,典型的是重载方法参数优先级

public class Test{

    // ①
public void myMethod(Object obj) {
System.out.println("My Object");
} // ②
public void myMethod(String str) {
System.out.println("My String");
} public static void main(String args[]) {
Test t=new Test();
t.myMethod(null); } }

  结果是输出“My String”,重载方法参数个数一样时,会自动找参数类型匹配的最接近的接口类型或者父类类型。对于这道题,null对象虽然是没有实际分配空间的,但是它也是个对象,所以优先匹配到String类型参数的方法,如果注释掉②处的代码,那么就匹配到Object 类型的代码,因为所有对象基于Object。

  总结:形参会从继承关系中从下往上开始搜索,越接近上层的优先级越低

  

Java面试-常见基础笔试题目的更多相关文章

  1. Java面试常见基础问题

    1.equals和==有什么区别? ==比较两个对象在内存里是不是同一个对象,就是说在内存里的存储位置一致. 如:两个String对象存储的值是一样的,但是可能在内存里存储在不同的地方. equals ...

  2. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  3. java面试| 精选基础题(3)

    每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 系列文章 java面试| 精选基础题(1) java面试|精选基础题(2) 1.float f=3.4;是否正确? 答:不正确,编译无法通过 ...

  4. java面试| 精选基础题(2)

    关注微信公众号"java从心",置顶公众号 每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 继续挖掘一些有趣的基础面试题,有错望指出来哈,请赐教~ 1.包装类的装箱与拆 ...

  5. java面试常见题目

    JAVA相关基础知识面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用 ...

  6. java面试|精选基础(1)

    以下题目是从面试经历和常考面试题中选出有点儿意思的题目,参考答案如有错误,请联系小编指正,感谢! 1.反射 1.1定义 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法 ...

  7. Java面试常见知识点总结(三)

    21.volatile关键字: 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:   (1) 保证了不同线程对这个变量进行操作时的可见性,即一个线程 ...

  8. Java面试之基础篇(4)

    31.String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可能,”xyz”对应一个对象,这个对 ...

  9. Java面试专题-基础篇(1)

随机推荐

  1. Python3.7 比较两个Excel文件指定列的值的异同,并将核对结果写入Excel中(含升级版本)

    背景: 最近工作中需要核对客户的历史数据, 接近400个产品,需要核对的列有15列,行数有8000+行 肉眼核对简直要吐血 心想着反正在学python呢 人生苦短 何不用python写个脚本 帮助我核 ...

  2. python pathlib模块(面向对象的文件系统路径)

    该模块提供表示文件系统路径的类,其语义适用于不同的操作系统 导入Path类: 获取当前目录的绝对路径: 返回当前目录的路径对象 路径拼接 os与PurePath/Path函数映射表 来自为知笔记(Wi ...

  3. centos7 安装jdk 脚本

    下载安装包 链接:https://pan.baidu.com/s/10-U54WwoEaCC9Afj58owJA 提取码:jdk8 写如脚本 vi ***.sh #!/bin/bash #instal ...

  4. spring security +MySQL + BCryptPasswordEncoder 单向加密验证 + 权限拦截 --- 心得

    1.前言 前面学习了 security的登录与登出 , 但是用户信息 是 application 配置 或内存直接注入进去的 ,不具有实用性,实际上的使用还需要权限管理,有些 访问接口需要某些权限才可 ...

  5. 微服务架构攀登之路(五)之Go-micro入门

    一.go-micro入门 1. go-micro 简介 Go Micro 是一个插件化的基础框架,基于此可以构建微服务,Micro 的设计哲学是可插拔的插件化架构 在架构之外,它默认实现了 consu ...

  6. Whitelabel Error Page错误原因

    前言: 今天在做项目中遇到了一个问题,项目启动成功,但是前段访问接口始终访问不成功,页面一直在404,百度了一番无非两种解决方案: 一.解决方案 1.项目是boot项目查看启动类的位置是否放置正确 要 ...

  7. HashMap原理及源码分析

    HashMap 原理及源码分析 1. 存储结构 HashMap 内部是由 Node 类型的数组实现的.Node 包含着键值对,内部有四个字段,从 next 字段我们可以看出,Node 是一个链表.即数 ...

  8. 使用.NET 6开发TodoList应用(29)——实现静态字符串本地化功能

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 在开发一些需要支持多种语言的应用程序时,我们需要根据切换的语言来对应展示一些静态的字符串字段,在本文中我们暂时不去讨论如何结合 ...

  9. Go - 如何编写 ProtoBuf 插件 (三) ?

    目录 前言 演示代码 小结 推荐阅读 前言 上篇文章<Go - 如何编写 ProtoBuf 插件 (二) >,分享了基于 自定义选项 定义了 interceptor 插件,然后在 hell ...

  10. hdfs文件导入到hive(带资源)

    前言 hive是基于Hadoop的一个数据仓库工具,用来进行数据提取.转化.加载,这是一种可以存储.查询和分析存储在Hadoop中的大规模数据的机制.hive数据仓库工具能将结构化的数据文件映射为一张 ...