Java基础面试笔试大汇总
1面向对象的特征有哪些方面?
抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象。
继承:继承就是从已有的类得到继承信息创建新类的过程
封装:封装就是把数据和操作数据的方法绑定起来,对数据的访问只能通过己定义的接口
多态:多态指的是允许不同的子类型的对象对同一个消息做出不同的响应
2.解释下内存中的栈(stack)、堆(heap)、静态区的用法
定义一个基本数据类型的变量,还有一个就是函数调用的现场保存都是使用内存中的栈,而new一个对象和构造器创建对象都是放在堆空间中,若直接书写100、“helloworid”和常量都是放在静态方法区。
3.重载和重写的区别
重写(Override):从字面上来看,重写就是冲新写一遍的意思,其实就在子类中把父类本身的方法重新写一遍,方法名、参数列表、返回类型必须相同,访问的修饰符一定要大于被重写的访问修饰符,
重载(Overload):在一个类中,一个方法如果有不同的参数列表则视为重载,同时,重载返回类型没有要求,可以相同或不同,是一个类中多态性的一个表现
4.equals与==的区别
==:比较的是变量(栈) 内存中存放的对象的(堆)内存地址,判断两个对象的地址是否相同,比较的是指针操作,比较的是操作符两端的操作数是否是同一个对象,两端的操作数必须是统一类型的
equals:比较两个对象的内容是否相等
5.HashCode的作用
hashcode他返回的就是根据对象的内存地址换算出来的一个值,当集合添加元素时,先调用这个元素的hashcode方法,就能定位到应该存放的物理位置上,若这个位置上没有元素,可以直接存储到这个位置上不用做任何比较,入这个位置上有元素,就调用他的equals方法进行比较,若相同就不存,不相同就散列其他的地址
6.String、StringBuffer和StringBuilder的区别
String:只读字符串,他不是基本数据类型,而是一个对象,每次对String操作都生成新的String对象
StringBuffer:对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的
StringBuilder:没有对方法进行加同步锁,所以是非线程安全的
6.Array(数组)
是基于索引index的数据结构,使用索引在数组中搜索和读取数据是很快的,获取数据的时间复杂度是O(1)但删除数据却是开销很大的,因为这需要重排数组中的所有数据
7.ArrayList和LinkedList的区别
首先先说与一下List,list是一个有序集合,可以包含重复元素,提供了按索引访问的方式,继承于Collection,
List集合:有两个重要的实现类ArrayList和LinkedList,ArrayList的toArray方法返回是一个数组,asList方法返回是一个列表,ArrayList底层是Array实现的
LinkedList:是一个双向链表在添加和删除元素时有很好的性能,但是在get和set方面弱于ArrayList
8.HashMap和HashTable的区别
HashTable线程同步,HashMap非线程同步
HashTable不允许<key,value>有空值, HashMap允许<key,value>有空值
HashTable继承于Dictionary类,HashMap继承于AbstractMap类
9.MVCC解决的问题是什么
MVCC是一种用来解决数据库读写冲突的无锁并发控制,为事务分配单项增长的时间戳,可以为数据库解决并发数据库时,可以做到读操作时不用阻塞写操作,写操作也不用阻塞读操作,提高了数据库并发读写的性能;解决了脏读、幻读不可重复读等事务隔离问题,但不能解决更新丢失问题
10.final用法
被final修饰的类不可以被调用
被final修饰的方法不可以被重写
被final修饰的变量不可以改变
11.static用法
静态变量和静态方法,也就是被stataic修饰的变量、方法都属于类的静态资源,类实例所共享,stataic也可以用于静态代码块
12.线程
线程与进程相似,但线程是一个比进程更小的执行单位,一个进程包含多个线程
13.IO流
按照流的流向分为输入流和输出流
按照操作单元划分可以分为字节流和字符流
按照流的角色划分分为节点流和处理流
14反射的作用与原理
反射机制是运行时对于任何一个类,都能知道这个类的所有属性和方法,对于任意个对象,都能调用他的任意一个方法,在java中,只要定义好类的命中,就可以通过反射机制来获取类的所有信息,JDBC就是典型的反射,
反射的实现方式:获取Class对象
1)Class.forName(“类的路径”);
2)类名.class
3)对象名.getClass()
4)基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象
实现java反射的类:
1)Class:表示正在运行的java应用程序中的类和接口
2)Field:提供有关类和接口属性信息,以及对它的动态访问权限
3)Constructor:提供关于类的单个构造方法的信息以及他的访问权限
4)Method:提供类或接口中某个方法的信息\
15.Java中实现多线程的几种方法
继承Thread类;实现Runnable接口;实现Callable接口通过FutureTask包装器来创建Thread线程;
16如何停止一个正在运行的线程
1)使用退出标志,使线程正常退出,也就是说当run方法执行完以后线程终止
2)使用stop强制停止,但不推荐这种方法,因为stop和suspend及resume一样都是过期作废的方法
3)使用interrupt方法中断线程
17notify和notifyAll有什么区别?
notify可能会导致死锁,而notify则不会,任何时候只有一个线程可以获得锁,也就是说只有一个线程可以运行synchronized中的代码使用notifyAll,可以唤醒所有处于wait状态的线程,使其重新进入锁的争夺队列中,而notify只能唤醒一个
18.sleep和wait有什么区别
sleep方法是属于Thread类中的sleep方法导致了程序暂停执行指定的时间,让cpu切换其他线程,但是它的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁,而wait方法是属于Object类中的,当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备,获取对象锁进入运行状态
19.Thread类中的Start()和run()方法有什么区别?
start()用来启动新的线程,而stat()内部调用了run()方法,这和直接调用run()方法不一样,当你调用run方法的时候,只会在原有的线程中调用,没有新的线程启动,start方法才会启动新的线程
20说一下你对synchronized关键字的了解
synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证它修饰的方法或者代码在任意时刻只能有一个线程执行
Java基础面试笔试大汇总的更多相关文章
- java面试笔试大汇总
java面试笔试题大汇总5 JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象:2.继承:3.封装:4. 多态性: 2.String是最基本的数据类型吗? 基本数据类型包括byte.int. ...
- C/C++ 笔试、面试题目大汇总 转
C/C++ 笔试.面试题目大汇总 这些东西有点烦,有点无聊.如果要去C++面试就看看吧.几年前网上搜索的.刚才看到,就整理一下,里面有些被我改了,感觉之前说的不对或不完善. 1.求下面函数的返回值( ...
- Java基础面试系列(一)
Java基础面试总结(一) 1. 面向对象和面向过程的区别 面向过程 面向对象 性能 高于面向对象 类加载的时候需要实例化,比较消耗资源 三易(易维护,易复用,易扩展) 不如面向对象 具有封装,继承, ...
- 2020阿里Java面试题目大汇总,看看你离阿里还有多远,附答案!
前言 首先说一下情况,我大概我是从去年12月份开始看书学习,到今年的6月份,一直学到看大家的面经基本上百分之90以上都会,我就在5月份开始投简历,边面试边补充基础知识等.也是有些辛苦.终于是在前不久拿 ...
- Java基础——面试、笔试
网址来源: http://www.nowcoder.com/discuss/5949?type=0&order=0&pos=4&page=2 参考资料:(java方面的一些面试 ...
- 2019年6月份,阿里最新Java高频面试真题汇总,仅供参考(附福利)
目录 技术一面(23问) 技术二面(3大块) JAVA开发技术面试中可能问到的问题(17问) JAVA方向技术考察点(33快) 项目实战(7大块) 必会知识(48点) 面试小技巧 注意事项 1. 阿里 ...
- 【转】2019年7月份,阿里最新Java高频面试真题汇总
技术一面(23问)技术二面(3大块)JAVA开发技术面试中可能问到的问题(17问)JAVA方向技术考察点(33快)项目实战(7大块)必会知识(48点)面试小技巧注意事项1. 阿里技术一面 Java I ...
- Java基础面试知识点总结
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- 【面试笔试】Java常见面试笔试总结
Java 基础 1.有哪些数据类型 Java定义了8种简单类型:byte.short.int.long.char.float.double和boolean. 2.面向对象的语言特征 封装.继承.多态 ...
- Java基础 面试总结(一)
一.java基础篇-概念 1.简述你所知道的Linux: Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网.云计算.智能手机( ...
随机推荐
- 【36oj】 画圣诞树
原题 圣诞节要到了,不少商家在宣传板上绘制了圣诞树的图案,如图所示.一棵圣诞树由A和B两部分组成: A是由n(n≥)个呈三角形的字符矩阵构成的,每个字符矩阵由三个参数ai.bi.ci唯一确定.Ai表示 ...
- Redux Toolkit——基操
redux-toolkit是redux的升级版 安装 npm install @reduxjs/toolkit // 在react中还需要搭配react-redux使用 npm install rea ...
- &以及&&的用法总结
&有两种用法 1.取地址 2.引用 取地址和引用没有任何关系,不要瞎联系! 1.取地址: // 很常规,仅此而已 std::string *p = &s; 2.引用: a)引用是某一个 ...
- 工程能力-远程JUNO-linux
工程能力-远程JUNO-linux 1 ping 通linux 地址 2 ssh/scp 连接/传输数据 ssh root@10.188.72.42 scp -P 22 README.md root@ ...
- Spring MVC文件上传下载
Spring MVC文件上传下载 单文件上传 底层是使用Apache fileupload 组件完成上传,Spring MVC对这种方式进行封装. pom.xml <dependency> ...
- Java8 提供CompletableFuture来简化高并发异步处理编程
(摘录自狂乱的贵公子)所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法.在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需 ...
- 【Quartus系列】实验一: 3-8译码器(原理图输⼊设计)
实验一: 3-8译码器(原理图输⼊设计) ⼀:实验⽬的 1. 了解3-8译码器的电路原理,掌握组合逻辑电路的设计⽅法 2. 掌握QuartusII软件原理图输⼊设计的流程 ⼆:实验内容 2.1设计输⼊ ...
- go组合
package main import "fmt" func main() { aa := []string{"a", "b", " ...
- 通过xshell在linux上安装nginx1.12.0
0)环境安装 Nginx是C语言开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境. 0.1 gcc 安装 安装 nginx 需要先将 ...
- Office & WPS 基础篇
基础知识 安装office 推荐使用Microsoft Office,原因不详,不做讨论 使用Office tool plus安装,不要三年前版本,一般三年一代,工具自己找,版本文件自己找. 具体选项 ...