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. grep 排除目录 grep -rn CONFIG_VE --exclude-dir={arch,drivers,net} --exclude=cscope*

    grep -rn CONFIG_VE --exclude-dir={arch,drivers,net} --exclude=cscope*

  2. build opencv with qt to make debugging easier

    最近发现使用自己编译的opencv,可以增强opencv的imshow函数功能.从哪里得到的线索已经忘记了.可能是无意中发现的某一张截图吧. 要实现cv::imshow函数功能增强,需要在cmake中 ...

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

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

  4. 蓝桥杯训练赛二-1169 问题 D: 绝对值排序

    题目描述 输入n(n<=100)个整数,按照绝对值从大到小排序后输出.题目保证对于每一个测试实例,所有的数的绝对值都不相等. 输入 输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整 ...

  5. CANas分析软件,DBC文件解析,CAN报文分析,仿CANoe曲线显示

    2023.01.01:增加对Kvaser的支持参考了CANoe写了下面的软件,主要用途是对报文的回放及曲线的分析. 1.CAN连接,支持周立功CAN.CANFD及PCAN 2.DBC解析与生成文件 打 ...

  6. tp项目部署到宝塔,运行nginx时无法访问首页之外的页面

    http://www.upwqy.com/details/254.html tp项目 部署到宝塔里面 运行环境nginx 直接访问首页是可以访问的.但是请求其他的接口的时候 报404 . 需要把下面这 ...

  7. uniapp 跳转链接

    安装 uni-link 超链接 组件在异步里需要 跳转页面 或者 app里打开浏览器,不能自动跳转, 如充值:增加一个弹窗,获取到地址之后,手动点击link,打开app <uni-link :h ...

  8. java的集合以及数据结构

    一.集合 1.介绍 红色为接口 蓝色为实现类 2.三种遍历方式 迭代器 增强for lambda表达式 Integer[] arr = col.toArray(new Integer[col.size ...

  9. 常用的Linux命令与它们的功能

    概要 filename 文件名 dir 文件夹名 string 字符串 username 用户名 groupname 组名 regex 正则表达式 path 路径 partition 分区名 port ...

  10. Python接口测试request

    requests安装 用pip安装requests模块 pip install requests 一.Get的使用 格式:get(url, params=None, **kwargs) Get常见查询 ...