当前位置: 首页 > news >正文

Java面试题总结2(持续更新)

1.如何格式化日期

解答:
Date now=new Date();

SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);

String formatNow=sdf.format(now);

变量formatNow就是格式化好的日期。

2.多线程有几种实现方法,都是什么?同步的方法有几种,都是什么?

解答:(1)多线程有两种实现方法:继承Thread类或者实现Runnable接口。
承java.lang.Thread,并重写run()方法,将线程的执行主体放入其中;实现java.lang.Runnable接口,实现它的run方法,将线程的执行主体放入其中。

这两种实现方式的区别并不大。继承Thread类的方式实现起来较为简单,但是继承它的类就不能再继承别的类了,因此也就不能继承别的类的有用的方法了。而使用是想Runnable接口的方式就不存在这个问题了,而且这种实现方式将线程主体和线程对象本身分离开来,逻辑上也较为清晰,所以推荐大家更多地采用这种方式。
(2)实现同步也有两种方法:一种是同步方法,另一种是同步代码块。

同步方法是在方法返回类型前面加上synchronized关键字

同步代码块是synchronized (这里写需要同步的对象){…}

3.谈一下聚簇索引和非聚簇索引的区别以及各自的优缺点。

解答:
聚集索引,表中存储的数据按照索引的顺序存储,检索效率比普通索引高,但对数据新增/修改/删除的影响比较大 非聚集索引,不影响表中的数据存储顺序,检索效率比聚集索引低,对数据新增/修改/删除的影响很小

4.死锁的必要条件?怎么克服?

解答:产生死锁的四个必要条件:

互斥条件:一个资源每次只能被一个进程使用。

请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

死锁的解决方法:

a 撤消陷于死锁的全部进程; b逐个撤消陷于死锁的进程,直到死锁不存在; c从陷于死锁的进程中逐个强迫放弃所占用的资源,直至死锁消失。 d从另外一些进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态

5.在服务器的网络编程中,解决会话跟踪的方法有:

A. 使用Cookie。

B. 使用URL重写。

C. 使用隐藏的表单域。

D. 以上方法都不能单独使用。

解答:ABC

6.垃圾回收的优点和原理。并考虑2种回收机制。

Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有”作用域”的概念,只有对象的引用才有”作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

7.请说出你所知道的线程同步的方法。

wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争.

8.GC是什么? 为什么要有GC? (基础)。
GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一: System.gc() Runtime.getRuntime().gc()

9.Overload和Override的区别。

Overloaded的方法是否可以改变返回值的类型? 方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被”屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

相关文章:

  • Python补充01 序列的方法
  • Spring依赖注入的三种方式
  • iOS 之自动布局
  • Android四大基本组件(1)之Activity与BroadcastReceive广播接收器
  • css实现左侧固定宽,右侧自适应
  • Android四大基本组件(2)之Service 服务与Content Provider内容提供者
  • Android四大基本组件(3)之四大组件总结
  • Android 使用Gson解析json案例详解
  • 网络加载数据和解析JSON格式数据案例之空气质量监测应用
  • Android抽屉菜单DrawerLayout的实现案例
  • 进程注入的学习(中)
  • Android程序之全国天气预报查询(聚合数据开发)
  • 什么时候用webserver,什么时候用一般处理文件
  • Android注册短信验证码功能
  • Android程序解析XML文件的方法及使用PULL解析XML案例
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【comparator, comparable】小总结
  • C++类中的特殊成员函数
  • Javascript Math对象和Date对象常用方法详解
  • java中的hashCode
  • jquery ajax学习笔记
  • MySQL-事务管理(基础)
  • nodejs实现webservice问题总结
  • Node项目之评分系统(二)- 数据库设计
  • Promise面试题,控制异步流程
  • Python3爬取英雄联盟英雄皮肤大图
  • 分布式熔断降级平台aegis
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 力扣(LeetCode)56
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 深度学习入门:10门免费线上课程推荐
  • 手机端车牌号码键盘的vue组件
  • Hibernate主键生成策略及选择
  • Nginx实现动静分离
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # 飞书APP集成平台-数字化落地
  • (二)c52学习之旅-简单了解单片机
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (理论篇)httpmoudle和httphandler一览
  • (四)c52学习之旅-流水LED灯
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net经典笔试题
  • .NET中的Exception处理(C#)
  • .NET中的十进制浮点类型,徐汇区网站设计
  • [1181]linux两台服务器之间传输文件和文件夹
  • [Android]使用Android打包Unity工程
  • [BJDCTF2020]The mystery of ip1
  • [BT]BUUCTF刷题第4天(3.22)
  • [BT]BUUCTF刷题第8天(3.26)