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基础面试笔试大汇总的更多相关文章

  1. java面试笔试大汇总

    java面试笔试题大汇总5 JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象:2.继承:3.封装:4. 多态性: 2.String是最基本的数据类型吗? 基本数据类型包括byte.int. ...

  2. C/C++ 笔试、面试题目大汇总 转

    C/C++ 笔试.面试题目大汇总 这些东西有点烦,有点无聊.如果要去C++面试就看看吧.几年前网上搜索的.刚才看到,就整理一下,里面有些被我改了,感觉之前说的不对或不完善. 1.求下面函数的返回值( ...

  3. Java基础面试系列(一)

    Java基础面试总结(一) 1. 面向对象和面向过程的区别 面向过程 面向对象 性能 高于面向对象 类加载的时候需要实例化,比较消耗资源 三易(易维护,易复用,易扩展) 不如面向对象 具有封装,继承, ...

  4. 2020阿里Java面试题目大汇总,看看你离阿里还有多远,附答案!

    前言 首先说一下情况,我大概我是从去年12月份开始看书学习,到今年的6月份,一直学到看大家的面经基本上百分之90以上都会,我就在5月份开始投简历,边面试边补充基础知识等.也是有些辛苦.终于是在前不久拿 ...

  5. Java基础——面试、笔试

    网址来源: http://www.nowcoder.com/discuss/5949?type=0&order=0&pos=4&page=2 参考资料:(java方面的一些面试 ...

  6. 2019年6月份,阿里最新Java高频面试真题汇总,仅供参考(附福利)

    目录 技术一面(23问) 技术二面(3大块) JAVA开发技术面试中可能问到的问题(17问) JAVA方向技术考察点(33快) 项目实战(7大块) 必会知识(48点) 面试小技巧 注意事项 1. 阿里 ...

  7. 【转】2019年7月份,阿里最新Java高频面试真题汇总

    技术一面(23问)技术二面(3大块)JAVA开发技术面试中可能问到的问题(17问)JAVA方向技术考察点(33快)项目实战(7大块)必会知识(48点)面试小技巧注意事项1. 阿里技术一面 Java I ...

  8. Java基础面试知识点总结

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  9. 【面试笔试】Java常见面试笔试总结

    Java 基础 1.有哪些数据类型 Java定义了8种简单类型:byte.short.int.long.char.float.double和boolean. 2.面向对象的语言特征 封装.继承.多态 ...

  10. Java基础 面试总结(一)

    一.java基础篇-概念 1.简述你所知道的Linux: Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网.云计算.智能手机( ...

随机推荐

  1. 【服务器数据恢复】热备盘同步失败导致数据丢失的raid5数据恢复案例

    服务器数据恢复环境:华为s系列服务器:24块硬盘组成一组raid5磁盘阵列,其中包含1块热备盘. 服务器故障&检测:服务器工作状态下raid5中有一块硬盘离线,热备盘激活替换离线硬盘并开始进行 ...

  2. jmeter--json格式的请求数据参数化以及断言

    环境背景:登录接口测试 第一步:创建登录接口的http请求 第二步:添加配置原件--CSV Data Set Config(配置如图所示) 第三步:接口的请求下添加响应断言(如:用响应状态码作为检查点 ...

  3. Django的urls的配置

    在一个请求到达的时候,最先达到的就是视图层,然后根据url映射到视图函数.这一部分我们来说明url的配置. 概述 为了给一个应用设计URL,你需要创建一个Python 模块,通常称为URLconf(U ...

  4. c++中内联函数和宏函数的区别

    一. 区别: 是不是函数: 宏定义不是函数,但是使用起来像函数.预处理器用复制宏代码的方式代替函数的调用,省去了函数压栈退栈过程,提高了效率: 内联函数本质上是一个函数,内联函数一般用于函数体的代码比 ...

  5. Winform帮助文档(C#打开chm定位到特定页面)国内最全总结写法。原文文档带翻译

    下面比较啰嗦,只一句即可:Help.ShowHelp(null,"C:\help.hcm", HelpNavigator.Topic,"index.htm")方 ...

  6. 官网jdk8,jdk11下载时需要登录Oracle账号的问题解决

    当到这一步骤时先勾选同意,在这个下载按钮上点鼠标右键复制链接地址 文件的下载地址 我们需要把地址做些修改.把等号前面的地址删掉,然后找到等号后面地址中的otn后面加上-pub 然后把这个地址直接复制到 ...

  7. 《Django 3 Web应用开发从零开始学(视频教学版)》源码课件教学视频免费下载

    #好书推荐##好书奇遇季#<Django 3 Web应用开发从零开始学(视频教学版)>,配书资源文后提供了下载二维码.京东当当天猫都有发售. https://item.jd.com/133 ...

  8. CART回归树算法

    [题目1] 表1为拖欠贷款人员训练样本数据集,使用CART算法基于该表数据构造决策树模型,并使用表2中测试样本集确定剪枝后的最优子树. 表1 拖欠贷款人员训练样本数据集 编号 房产状况 婚姻情况 年收 ...

  9. How to Avoid Trivial Solutions in Physics-Informed Neural Networks

    未发表(2021) 本文也是关注采样点的一篇工作.主要从PINN的性能与采样点数量的关系方面入手考虑.提出了一个新的惩罚项,并对采样策略提出了一点看法. 本文的工作相对比较直观,简单,效果可能并不是很 ...

  10. Oracle 低版本客户端连接19C报错ORA-28040

    # 适用范围12.2+# 问题概述客户使用Oracle11.2客户端连接Oracle 19c的时候,报错: ORA-28040: No matching authentication protocol ...