Java面试-常见基础笔试题目
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;
}
}
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面试-常见基础笔试题目的更多相关文章
- Java面试常见基础问题
1.equals和==有什么区别? ==比较两个对象在内存里是不是同一个对象,就是说在内存里的存储位置一致. 如:两个String对象存储的值是一样的,但是可能在内存里存储在不同的地方. equals ...
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- java面试| 精选基础题(3)
每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 系列文章 java面试| 精选基础题(1) java面试|精选基础题(2) 1.float f=3.4;是否正确? 答:不正确,编译无法通过 ...
- java面试| 精选基础题(2)
关注微信公众号"java从心",置顶公众号 每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 继续挖掘一些有趣的基础面试题,有错望指出来哈,请赐教~ 1.包装类的装箱与拆 ...
- java面试常见题目
JAVA相关基础知识面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用 ...
- java面试|精选基础(1)
以下题目是从面试经历和常考面试题中选出有点儿意思的题目,参考答案如有错误,请联系小编指正,感谢! 1.反射 1.1定义 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法 ...
- Java面试常见知识点总结(三)
21.volatile关键字: 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: (1) 保证了不同线程对这个变量进行操作时的可见性,即一个线程 ...
- Java面试之基础篇(4)
31.String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可能,”xyz”对应一个对象,这个对 ...
- Java面试专题-基础篇(1)
随机推荐
- java 反射 的详细总结
1.前言 什么是反射? 引用教科书的解释: 在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的 ...
- Centos更换阿里云源
1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的CentOS-Base ...
- SQL高级优化(五)之执行计划
一.explain 执行计划:在MySQL中可以通过explain关键字模拟优化器执行SQL语句,从而知道MySQL是如何处理SQL语句的. explain:MySQL执行计划的工具,查看MySQL如 ...
- Go语言系列之标准库log
Go语言内置的log包实现了简单的日志服务.本文介绍了标准库log的基本使用. 使用Logger log包定义了Logger类型,该类型提供了一些格式化输出的方法.本包也提供了一个预定义的" ...
- Vue系列教程(三)之vue-cli脚手架的使用
一.Vue-cli的环境准备 目的:(1)快速管理依赖 (2)确定项目结构 1.安装node.js Node.js是一个可以让前端运行在服务器上的一个工. 下载:https://nodejs.org/ ...
- Bootstrap实战 - 注册和登录
一.介绍 注册和登录在社交和商业网站中是必不可少的一个部分. 二.知识点 2.1 标签页 2.1.1 基础标签页 标签页的使用与导航栏类似,同时都依赖于基础样式 nav,不同的是附加样式变成了 nav ...
- 记一次异步处理导致Jetty Request对象泄漏
最近排查一个bug,发现了一系列有意思的东西,对「自定义线程池」.「Jetty线程模型」都有了一些新的认识. 本文预计阅读时间10分钟,包括: 问题表现 常见原因筛查 根因与源码分析 最佳实践 一些小 ...
- UML 有关类图知识及类间关系
原文链接:https://blog.csdn.net/mj_ww/article/details/53020346 1. 类的含义 类图(Class diagram)显示了系统的静态结构,而系统的静态 ...
- 【解决了一个小问题】gin框架中出现如下错误:"[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 500"
POST到数据到一条gin框架的接口后,客户端收到400错误,并且返回了业务中返回的"decode json fail". 关键代码是: func report(c *gin.Co ...
- javascript 获取<td>标签内的值。
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. 通过可编程的对象模型,JavaScript 获得了足够的能力来 ...