首页 > 编程语言 >JAVA面试题(一)

JAVA面试题(一)

时间:2023-08-06 19:32:30浏览次数:39  
标签:面试题 多线程 JAVA 方法 线程 序列化 数据 id

问:谈谈你自己对面向对象的理解?

抽象,封装,继承,多态

理解:假如我是女娲,我要造人(人是个对象),人要有思想,肉体(抽象) 

因为要造很多人,所以我想请人一起帮忙造,但是我又不想让他知道我的技术,所以我就把造人的技术封装起来,然后他只需要知道造什么样子的人就行了(封装)

但是这样效率还是很慢,所以我就造了一个父母的模板,孩子只要去继承他们就行了。(继承)

但是所有的父母模板肯定不是全部一样,我要在原来的模板上面添加别的东西,这个就是多态。

问:面向对象和面向过程的区别?

举个例子:大象塞进冰箱

面向过程:

1.打开冰箱门

2.塞进大象

3.关闭冰箱门

面向对象

1.冰箱的门打开

2.冰箱装入大象

3.冰箱的门关闭

问:在java中使用包管理类有什么好处?

答:1.避免命名冲突 2.分类管理 3.提高复用性(复用性即可以多次使用的特性。对于代码来说复用性就是一种框架式结构,通过高度的抽象,让你的代码能适应更多种的情况,完成更多种情况的任务,这就是代码的复用性。)

问:SpringMVC的原理?

1.http请求到dispathservlet

2.handermapping寻找处理器(handermapping请求映射处理器,也就是通过请求的URL找到对应的controller)

3.调用处理器controller

4.controller调用业务逻辑后,返回modelandview

5.DispatherServlet查询modelandview

6.modelandview将数据反馈给http

问:shiro框架的优缺点?

1.优点:安全性高,可以对用户权限进行授权

2.缺点:不能反向解码

问:进程和线程区别?

根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位

进程:相当于流水线作业,线程:相当于流水线上面的工作人员

问:SQL语句中的$和#的区别?

#相当于预处理操作,防止sql的注入,相当会把你的传入的参数给隐藏掉

$不会将你传入的参数给隐藏掉

问:Java多线程并发?

Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过 Thread 类的 start()实例方法。

问:多线程的start和run的区别?

1.start()方法来启动线程,真正实现了多线程运行。这时无需等待 run 方法体代码执行完毕,可以直接继续执行下面的代码。

2.通过调用 Thread 类的 start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运 行。

3.. 方法 run()称为线程体,它包含了要执行的这个线程的内容,线程就进入了运行状态,开始运行 run 函数当中的代码。 Run 方法运行结束, 此线程终止。然后 CPU 再调度其它线程。

问:java的容器有哪些?它们之间有什么关系,集成了那些类?

list(列表),map(映射),set(集合)

java集合可以分为两种体系conllection和map

list存放有序的数据,set存放无序的数据

map存放数据是<key,value>的形式

问:面向对象的设计模式?

1.单一职责(一个方法或一个类只做一件事情,为了模块内高内聚)

2.迪米特法则(为了模块间低耦合)

3.里氏替换(就是继承原则,子类继承父类的方法)

4.依赖倒置(类之间的依赖通过接口实现,低耦合的同时对扩展开放)

5.接口隔离

6.合成复用原则

问:hashmap的应用场景?

hashmap相当于集合map,可以保存kv形式的数据,key不可重复且无序,但是查找的效率很高。

问:mybatis-plus添加数据,id生成问题?

mybatis-plus默认会生成id,该id是雪花算法生成的id

雪花算法:SnowFlake 算法,是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增的。

解决方法:

将字段改为long(长整型)

实体类上面添加注解

问:什么是乐观锁?

乐观锁 : 故名思意十分乐观,它总是认为不会出现问题,无论干什么不去上锁!如果出现了问题,

再次更新值测试

悲观锁:故名思意十分悲观,它总是认为总是出现问题,无论干什么都会上锁!再去操作!

失败的案例:多线程的情况下面测试乐观锁,不会覆盖插队线程的值

问:什么是restful风格?

我的理解是设计接口的风格,最显著的特点:给用户一个url,根据method不同在后端做不同的处理,比如post是创建数据,get是获取数据,put是修改数据,delete删除数据

问:JDBC连接数据库的步骤?

1.注册驱动(driver-class-name)

2.获取连接(url,username,password)

3.编写sql语句

4.执行sql语句

5.处理对象结果集

6.关闭连接

问:JAVA序列化?

保存(持久化)对象及其状态到内存或者磁盘

序列化对象以字节数组来保存

在 Java 中,只要一个类实现了 java.io.Serializable 接口,那么它就可以被序列化。

通过 ObjectOutputStream 和 ObjectInputStream 对对象进行序列化及反序列化。

问:spring的特点?

轻量级,控制反转,面向切面,容器,框架集合

问:aop实现切面的步骤?

1.导入依赖

2.在spring的配置文件中加入aop的命名空间

3.基于注解/配置的方式来使用aop

4.编写切面类

5.配置切面

问:全局唯一ID的生成策略?

UUID,redis自增,snowflake算法,数据库自增

问:数据库的事务性?

原子性,一致性,隔离性,持久性.ACID 并且操作要么执行要么都不执行

1.setAutoCommit(false)设置事务为手动提交,2.commit提交事务,3.出现异常产生回滚rollback

问:什么是脏读?

当我们使用事务时,有可能会出现这样的情况,有一行数据刚更新,与此同时另一个查询读到了这个刚更新的值。这样就导致了脏读,因为更新的数据还没有进行持久化,更新这行数据的业务可能会出现回滚,这样这个数据就是无效的。

问: arraylist和linkedlist的区别?

arraylist是基于索引的数据接口,底层是数组;linkedlist是以元素列表的形式存储他的数据

插入和删除的时候linkedlist更加方便,查询的时候arraylist(支持随机访问)更加方便

问:jdk1.8的新特性?

lambada表达式,重复的注解,扩展方法(接口中可以静态、默认的方法)

标签:面试题,多线程,JAVA,方法,线程,序列化,数据,id
From: https://blog.51cto.com/u_16155131/6986206

相关文章

  • 【JavaScript11】正则表达式 RegExp对象
    定义正则表达式(英语:RegularExpression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。搜索模式可用于文本搜索和文本替换。创建RexExp对象有两种方式创建RexExp对象第一种:使用字面量创建RegExp对象的语法:第......
  • javascript 浮点运算库big.js
    big.js浮点运算库安装npminstallbig.js使用constBig=require('big.js');orimportBigfrom"big.js";x=newBig(0.3)x.minus(0.1)//"0.2"Api常量定义big.js的常量定义一共有5个,分别的含义是:DP,小数点后位数,默认值是20RM,四舍五入方式,默认为1,代表向最近......
  • javascript~常用工具类的封装
    JavaScript1.type类型判断isString(o){//是否字符串returnObject.prototype.toString.call(o).slice(8,-1)==='String'}isNumber(o){//是否数字returnObject.prototype.toString.call(o).slice(8,-1)==='Number'}isObj(o){//是否对象......
  • 【狂神说Java】Java零基础学习笔记-Java方法
    【狂神说Java】Java零基础学习笔记-Java方法Java方法01:何谓方法?System.out.println(),那么它是什么呢?Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法的原则:方......
  • 基于Java开发的校园论坛系统
    随着高校精神文化建设规模的不断深入发展,建设和发展校园论坛系统成为提升校园内部各项文化交流的重要手段。面对校园文化急需一款适合自己特色的论坛系统,高校管理人员既有迫切需要提升师生文化交流的愿望,也有管理大量论坛交流信息的巨大压力。校园论坛是师生的公共论坛,弘扬的青春积......
  • 老杜 JavaWeb 讲解(十九) ——Filter过滤器
    (十七)Filter过滤器Filter过滤器当前的OA项目存在什么缺陷?DeptServlet、EmpServlet、OrderServlet。每一个Servlet都是处理自己相关的业务。在这些Servlet执行之前都是需要判断用户是否登录了。如果用户登录了,可以继续操作,如果没有登录,需要用户登录。这段判断用户是否登录......
  • 全能指挥官:玩转JavaScript命令模式,让代码听你的话!
    前言系列首发于公众号『非同质前端札记』,若不想错过更多精彩内容,请“星标”一下,敬请关注公众号最新消息。全能指挥官:玩转JavaScript命令模式,让代码听你的话!命令模式的含义命令模式指的是一个执行某些特定的指令。命令模式的示例demo://命令接口classCommand{execute(){......
  • Java中的Stream API简述
    (StreamAPI)StreamAPI概述Java8中有两大最为重要的改变。第一个是Lambda表达式;另外一个则是StreamAPI。StreamAPI(java.util.stream)把真正的函数式编程风格引入到Java中。这是目前为止对Java类库最好的补充,因为StreamAPI可以极大提供Java程序员的生产力,让程序员写......
  • Java中关于时间日期的API
    (Java中关于时间日期的API)JDK8之前日期和时间的API1.java.util.Date类1.1两个构造器的使用构造器一:Date():创建一个对应当前时间的Date对象Datedate1=newDate();System.out.println(date1.toString());//SatFeb1616:35:31GMT+08:002019......
  • 基于JAVA的房屋租赁及其管理系统
    本房屋租赁及其管理系统是针对目前房屋租赁管理的实际需求,从实际工作出发,对过去的房屋租赁管理系统存在的问题进行分析,结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用目前最流行的B/S结构和java中流行的MVC三层设计模式和myeclipse编辑器、sqlserver数......