IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 面试题归纳(java) -> 正文阅读

[Java知识库]面试题归纳(java)

java基础知识

面向对象

多态(重写、重载),继承,封装,抽象

hashCode

主要为了查找的快捷性(hashMap hashtable等,equals也可以用)
如果equals重写hashCode也要重写

容器的继承关系


Hashtable线程安全,hashMap线程不安全
Vector线程安全 其他list线程不安全
Set都是不安全的,用CopyOnWriteArraySet创建是安全的

LinkedList增删改效率高,基于链表,线程安全
ArrayList查询效率高,基于数组,线程不安全,用于快速随机访问
Array是数组,arrayList是它的升级版,可以存放不同类型的元素(因为存的是object)
Vector:非常类似ArrayList但是是同步的
Stack:继承自Vector
HashSet 不保证顺序,可以至多有一个null
HashMap 存储键值对,用键值对计算hashCode,比hashset快

异常

死锁

互斥条件(排他性使用),请求和保持条件(进程已经获取了一个资源,还要获取另一个,获取不到就不放目前持有的资源),不剥夺条件(进城已获得的资源只能在使用完后自己释放),火炉等待条件(发生死锁时必然有一个进程-资源的环形链)

文件链式存储

关键字

static:static方法就是没有this的方法,方便在没有创建对象的情况下进行调用
final:定义变量的话在赋初值后不能修改,定义类的话类不能继承

设计模式

单例模式


分为懒汉模式和饿汉模式,懒汉模式线程不安全

观察者模式

被观察者是同一个父类的子类,观察者内部有被观察者的列表,在需要时可以依次调用所有被观察者的某方法进行操作(对被观察者的通知)


装饰模式

父类中的方法较简单/通用,子类在继承时在内部创建父类的实例,并在重写方法时对父类的方法进行扩展

适配器模式

某类在执行其中某函数时需要调用其他类中的函数,因此创建专用函数用于调用其他类的实例,并在其他函数中使用该实例的函数

工厂模式



代理模式

一个类可能要实现多种功能,因此首先创建一个接口,所有的类继承于这个接口,每个类中只实现一部分功能


算法

常用排序算法

二分查找

元素必须有序,不停的和中间的元素比

冒泡排序

len-1趟
重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来

插排

只走一趟
对于序列的每一个值和后一个相比,如果逆序则对调,每次对调后依次与前面的值相比,如果逆序则不停对调直到完成排序。

简单选择排序(选最小)

给定数组 int[] arr={里面n个数据};第1趟排序,在待排序数据arr[0] ~ arr[n-1]中选出最小的数据,将它与arrr[0]交换;第2趟,在待排序数据arr[1] ~ arr[n-1]中选出最小的数据,将它与r[1]交换;以此类推,第i趟在待排序数据arr[i-1]~arr[n-1]中选出最小的数据,将它与r[i-1]交换,直到全部排序完成。

快排

选定基准值,所有比基准值小的去一边,大的去另一边

最短路径算法

Floyd

邻接表中只记录最短路径长度,不记录最短路径的细节,如果不连通用无穷大表示;更新n次表即得到最终结果

Dijkstra

维护一个最短路径集合,不停的找距离集合最近的点加入,最开始加入的点是初始点

树的遍历算法

先序

递归:先左后右
非递归:根节点入栈,然后循环,指针首先指向栈底,每一轮循环栈底出栈,并输出,再将指针指向的结点右、左结点依次入栈,指针指向top–

中序

递归遍历时先遍历左,再输出当前,再遍历右
非递归遍历时同上

后序

递归遍历时先依次遍历左右结点,再输出当前
非递归遍历时给每个结点一个标记,只有遍历过它的所有孩子结点后才能置零,标志为0被遍历时才能输出,否则依次将它的左右孩子结点入栈并将标志位置零不输出。

广度

用队列实现

计网

常见网络异常

400 请求无效
408 请求超时
305 使用代理

三次握手


四次挥手


http和https

HTTP 的方法:get post head put delete connect option(获取服务器支持的请求方法) trace(测试诊断)
http是超文本传输协议,信息是明文传输,https是具有安全性的ssl加密传输协议,端口不一样,是不同的连接方式,http无状态协议,https是由ssl+http构建的可进行加密传输,身份认证的网络协议
http工作原理(基于TCP实现的):

滑动窗口

用于网络传输时候的拥塞控制,避免网络拥堵

常见网络协议

应用层:HTTP FTP SMTP POP3
会话层:SSL
运输层:TCP UDP

网络层:IP ICMP
数据链路层:ARP

在浏览器中输入url地址 ->> 显示主页的过程

1.DNS解析
2.TCP连接
3.发送HTTP请求
4.服务器处理请求并返回HTTP报文
5.浏览器解析渲染页面
6.连接结束

数据库

删表用drop 改表用alert
索引:
1.聚集索引(主键索引):在数据库里面,所有行数都会按照主键索引进行排序。
2.非聚集索引:就是给普通字段加上索引。
3.联合索引:就是好几个字段组成的索引,称为联合索引。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:01:36  更:2021-08-03 11:02:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 21:10:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码