-
百度阿里腾讯最常考的Java面试题精选13--13.Java中的异常分类及处理方法有哪些?
2020-07-19 18:24:1013.Java中的异常分类及处理方法有哪些? 1. 异常分类 Java包的异常均继承于Throwable类 有两大子类 1.1.Error 这种问题通常代码无法处理,比如内存溢出,解决的办法就是加内存 1.2.Exception Exception异常又分为两大类...13.Java中的异常分类及处理方法有哪些?
1. 异常分类
Java包的异常均继承于Throwable类
有两大子类1.1.Error
这种问题通常代码无法处理,比如内存溢出,解决的办法就是加内存
1.2.Exception
Exception异常又分为两大类,一类是编译时期的异常,一类是运行时期的异常
-
1.2.1 编译时期的异常:
将java文件编译成.class文件过程叫做编译时期,这种异常包含了RuntimeException及其子类
写完代码就报错的异常 -
1.2.2 运行时期的异常
编译过程不需要处理,在虚拟机运行.class文件时出现的异常叫做运行时期异常,这种异常包含了RuntimeException及其子类
写完代码不饱错,执行程序报错
2.异常的处理
2.1 JVM 处理异常
处理方式:把异常类型,原因位置打印在控制台,终止了JVM虚拟机
这种方式由于终止了虚拟机,用户体验差2.2 手动处理异常
- 2.2.1 捕获异常
//1.格式
try{
可能会出现问题的代码
}catch(异常的类型1 变量名1){
处理异常的方案
}//2.特点
1 如果try中代码没有问题, 代码正常执行,catch中的内容不会执行
2 如果try中代码存储异常, 当执行到异常处,直接跳转到catch中执行处理异常的代码
3 可以使用多个catch捕获多个异常, 如果try中出现了异常,但是catch无法捕获,那么就会把异常交给虚拟机处理//3.优点
当程序出现了异常, 也可以继续执行 , 提高用户的体验- 2.2.2 抛出异常
格式 : throws 异常的类型 使用在方法的声明后
举例 : public void method() throws 异常的类型 {…}
特点 :
抛出异常,指的是告诉调用者,此方法可能会出现异常
如果方法中真的出现了异常, 会把异常抛给调用者进行处理
如果方法中程序正常, 会正常执行
注意 :
1 如果方法抛出的是编译时期异常,必须处理
2 如果方法抛出的是运行时期异常,可以省略不写- 2.2.3两种异常的区别
捕获异常 : 是自己把异常处理
抛出异常 : 把异常交给调用者处理
-
-
什么是操作系统(OS)?都有哪些常见的分类?
2020-12-24 01:38:21操作系统的两个作用:首先直接和(CPU,内存,硬盘,声卡等)硬件打交道,其次把操作硬件的方法封装成系统调用供程序员直接访问,从而实现硬件的的功能。 有那些主流的操作系统? 1 Desktop OS:: windows, MacOS, ...操作系统的两个作用:首先直接和(CPU,内存,硬盘,声卡等)硬件打交道,其次把操作硬件的方法封装成系统调用供程序员直接访问,从而实现硬件的的功能。
有那些主流的操作系统?
1 Desktop OS:: windows, MacOS, Linux(没错 Linux也是)
2 Server OS: Linux(没错 Linux即使Desktop OS也是Server OS), windows server(需要付费)
3 Embed OS: Linux(没错 又是Linux) 这种操作系用是用来开发智能硬件 机器人 智能家居
4 Mobile OS: iOS, Android(基于 Linux(没错 还有我 没想到8))现在知道Linux有多么重要了吧。
-
java中 什么是常量、变量以及数据类型、注释方法有哪些
2019-09-03 09:34:08文章目录1. 变量1.1 概念1.2 变量使用注意事项1.3 变量定义... 数据类型(4类8种)3.1 Java语言基础(数据类型的概述和分类)(掌握)4 java注释方法4.1 三种注释方法 1. 变量 1.1 概念 变量是指内存中的一个存储区域,...文章目录
1. 变量
1.1 概念
变量是指内存中的一个存储区域,该区域要有自己的名称(变量名)、类型(数据类型),该区域的数据可以在同一数据类型的范围内不断变化值
1.2 变量使用注意事项
1、Java中的变量必须声明后才能进行使用。
2、变量的作用域:在一对{}中为有效区间。
3、需要进行初始化后才能使用变量。
1.3 变量定义语法
数据类型 变量名 = 初始化值;
变量的使用是通过变量名来访问所指向的内存区域中存储的值。
1.4 变量声明规则(掌握)
- A:什么是标识符
- 就是给类,接口,方法,变量等起名字时使用的字符序列
- B:标识符的组成规则
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
- 英文大小写字母
- 数字字符
- $和_
- 标识符是大小写敏感的
- C:标识符注意事项
- 1,不能使用关键字
- 2,不能数字开头
- 3,合法标识符举例:age、$salary、_value、__1_value
- 4,非法标识符举例:123abc、-salary
1.5 Java语言基础(标识符中常见的命名规则)(了解)
- 见名知意
- A:包
- 最好是域名倒过来,要求所有的字母小写
- B:类或者接口
- 如果是一个单词首字母大写
- 如果是多个单词每个单词首字母大写(驼峰标识)
- C:方法或者变量
- 如果是一个单词全部小写
- 如果是多个单词,从第二个单词首字母大写
- D:常量
- 如果是一个单词,所有字母大写
- 如果是多个单词,所有的单词大写,用下划线区分每个单词
2 常量
2.1 Java语言基础(常量的概述和使用)(掌握)
- A:什么是常量
- 在程序执行的过程中其值不可以发生改变
- B:Java中常量的分类
- 字面值常量
- 自定义常量
- C:字面值常量的分类
- 字符串常量 用双引号括起来的内容
- 整数常量 所有整数
- 小数常量 所有小数
- 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
- 布尔常量 较为特殊,只有true和false
- 空常量 null(数组部分讲解)
3. 数据类型(4类8种)
3.1 Java语言基础(数据类型的概述和分类)(掌握)
- A:为什么有数据类型
- Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
- B:Java中数据类型的分类
- 基本数据类型
- 引用数据类型
- 面向对象部分讲解
- C:基本数据类型分类(4类8种)
- 整数型
- byte 占一个字节 -128到127
- short 占两个字 -215~215-1
- int 占四个字节 -231~231-1
- long 占八个字节 -263~263-1
- 浮点型
- float 占四个字节 -3.403E38~3.403E38 单精度
- double 占八个字节-1.798E308~1.798E308 双精度
- 字符型
- char 占两个字节 0~65535
- 布尔型
- boolean
- boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
- boolean
- 整数型
4 java注释方法
4.1 三种注释方法
1、单行注释 //注释的内容
2、多行注释 /…/
3、/**…*/,这种方式和第二种方式相似。这种格式是为了便于javadoc程序自动生成文档。
下面介绍一下Javadoc的标记:
特别声明:(1)javadoc针对public类生成注释文档
(2)javadoc只能在public、protected修饰的方法或者属性之上
(3)javadoc注释的格式化:前导*号和HTML标签
(4)javadoc注释要仅靠在类、属性、方法之前
5 Java修饰符
像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
访问控制修饰符 : default, public , protected, private
非访问控制修饰符 : final, abstract, static, synchronized - A:什么是标识符
-
Linux进程间通信的主要方式有哪些?
2020-10-25 17:35:20IPCIPC及网络编程管道进程间通信概念管道的概念及分类管道的概念及特点管道的分类管道编程1 创建管道消息队列共享内存信号量Linux网络编程基本套接口编程 IPC及网络编程 管道 古老的进程间通信机制。 进程间通信概念...IPC及网络编程
管道
古老的进程间通信机制。
进程间通信概念
进程间通信是在不同进程间进行信息交换的机制。Linux进程间通信机制主要包括管道、信号、消息队列、共享内存、信号量、套接口。
- 管道:管道可以划分为普通管道及命名管道。普通管道用于具有亲缘关系的进程(父子进程)间的通信,命名管道则在普通管道提供的功能基础上,通过给管道命名的方法,使管道变成文件系统中的管道文件,从而允许无亲缘关系进程间通过访问管道文件进行通信。
- 信号:只要知道进程的进程号,就可以向进程发送信号。
- 消息队列:是消息的链表。进程可以向消息队列中发送某种类型的消息,也可以从消息队列中读取指定类型的消息,消息内容可以根据需要自行定义,从而使消息队列克服了信号承载信息量过少的缺点,在实际编程中应用较广。
- 共享内存:系统内核分配的一块缓冲区,多个进程都可以访问该缓冲区。由于进程可以直接读写内存,避免了在内核空间与用户空间的切换,所以共享内存读写效率很高。
- 信号量:也称为信号灯,主要用于进程间的同步。
- 套接字:跨越主机边界的通信,成为事实上的网络编程接口。
消息队列、共享内存、信号量3种机制合并起来称为进程间通信,简称为IPC(Inter Process Communication)。
管道的概念及分类
管道的概念及特点
管道,顾名思义就是一个连接连个进程的连接器。管道是单向的,一端只能用于输入,另一端只能用于输出。遵循FIFO原则,普通管道只能用于有亲缘关系的父子进程之间通信。
本质上,Linux的管道是一种文件,特点:- 数据流单向,只能从写入端向读出端流动
- 数据遵循FIFO原则
- 管道大小有限制,4096个字节,在管道满时,写管道将阻塞,在管道空时,读管道将阻塞
管道的分类
- 普通管道
- 命名管道
管道提供了父进程和子进程通信的手段,父进程在内存中创建一个管道,并将该管道传递给子进程。通过管道父进程和子进程便可以进行通信。
命名管道在功能上和管道是相同的,只不过命名管道位于文件系统中,只要可以访问文件系统的进程都可以通过管道的名字进行访问。所以,命名管道可以实现无任何亲缘关系的两个进程间的通信处理。
管道编程
具有亲缘关系的父子进程一个进程向管道写,一个进程从管道读。从本质上看,管道是一对文件描述符的组合。因此基本对文件的操作都可以用在管道上。
管道的主要操作:1 创建管道
管道创建后就可使用进行数据交换。创建管道的函数是pipe,该函数是以一个两个成员的整型数据为参数。数组的第一个成员是用于读的文件描述符,数组的第二个成员用于写的文件描述符。pipe的声明文件位于头文件
<unistd.h>
。#include<unistd.h> int pipe(int __pipedes[2]);
返回0表示函数执行成功,-1表示执行失败。
该函数通常情况下的应用场合为:一个进程通过pipe创建管道后,再fork一个子进程,然后通过管道实现父子进程间的通信。
【例】创建一个管道,将命令行参数通过管道传输至新派生的子进程。
#include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<string.h> #include<sys/wait.h> int main(int argc, char * argv[]){ int pfd[2]; // 整形数组,用于保存打开管道后的两个文件描述符 pid_t cpid; // 用于保存进程标识符 char buf; if(argc!=2){ // 判断命令行参数是否符合要求 fprintf(stderr, "Usage: %s <string>\n", argv[0]); } if(pipe(pfd) == -1){ // 创建管道 perror("pipe"); exit(EXIT_FAILURE); } cpid = fork(); // 创建进程 if(cpid == -1){ // 创建进程失败的处理 perror("fork"); exit(-1); } if(cpid == 0){ // 在子进程中 close(pfd[1]); // 关闭写管道描述符,将引用计数减一 while(read(pfd[0], &buf, 1) > 0){ // 循环读取数据 write(STDOUT_FILENO, &buf, 1); // 输出读到的数据,输出至标准输出(缺省为计算机屏幕) } close(pfd[0]); // 关闭管道的读描述符,将引用计数减一 exit(0); //退出子进程 } else{ // 在父进程中 close(pfd[0]); // 关闭读管道描述符,实际是将引用计数减 write(pfd[1], argv[1], strlen(argv[1])); // 向管道中写入命令行参数1 close(pfd[1]); // 关闭写管道描述符,实际上将引用计数减一 wait(NULL); // 等待子进程退出 exit(0); } }
消息队列
共享内存
信号量
Linux网络编程
基本套接口编程
-
电脑优化的方法
2017-02-09 09:32:00相关信息 CPU二级缓存的工作原理是什么呢? 怎么测试CPU的超频能力_? 计算机CPU的频率有什么特点? ...内存控制器的的技术优点是什么呢?...运算器的功能有哪些分类? 抗ccp抗体 处理器i... -
Java JVM 中 堆,栈,方法区 详解
2017-03-01 16:45:51一 jvm运行时数据区有哪些我们先来看一张图 JVM运行时数据区分类 1. JVM栈 (Java Virtual Machine Stacks) 2. 堆内存 (Heap Memory) 3. 方法区 (Method Area) 4. 本地方法栈 (Native Method Stacks) 5.... -
请教一个JVM内存优化的问题
2008-12-28 22:46:35网上搜答案也是五花八门,希望大家能推荐一个内存优化参数的文章 另外我上面设置的参数有哪些方面可以优化,或者哪些地方写的不对。 <br />核心的代码我都贴到下面:(我是刚入门的菜鸟,大家别笑话我写... -
刷LeetCode时使用LinkedList的常用方法总结
2020-07-04 19:42:50前言 ...这个时候LinkedList的优势便体现了出来,其底层由双向链表构成这点可以保证其修改,只需要针对指定节点的前后指向进行修改即可,那么LinkedList有哪些常用的方法呢?下面分类型进行汇总: 增加 -
线程间通信的几种方法_浅谈unix进程进程间通信IPC原理
2020-12-04 06:48:43什么是进程进程间通信进程间通信即为不同进程之间通信,进程同步是进程间通信的一种unix进程间通信的分类有哪些System V进程间通信方式包含:System V消息队列System V信号量System V共享内存UNIX进程间通信方式包含... -
服务器频繁宕机_服务器常见故障和排除方法
2021-01-16 17:54:21具体有哪些常见的故障,怎么排除这些故障呢?一、硬件故障:硬件故障有很多种,对系统产生的影响也不一样,这里按其故障对系统的影响程度分:致命影响的硬件故障和只影响功能的硬件故障两类进行硬件分类:其损坏对... -
计算机要学哪些东西----(还有附赠哦)
2010-11-21 12:50:47该分类方案的依据及其历史、结构和应用的其它细节包含在完整的任务组报告中。由于我们希望附录比完整的报告有更多的读者,所以任务组认为在每一篇附录中概述理解该推荐所必须的基本概念是重要的。在下面几节中我们列... -
第 2 章 一 类加载子系统 (类加载过程、类加载器的分类、双亲委派机制)
2020-12-15 14:33:32第 2 章 类加载子系统 1、内存结构概述 如果自己想写一个Java虚拟机的话,主要考虑哪些结构呢?...加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还 -
超级有影响力霸气的Java面试题大全文档
2012-07-18 09:47:04如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 18、error和exception有什么区别? error 表示恢复... -
JVM面试总结-上篇
2020-12-08 11:10:466.JVM垃圾回收算法有哪些? 7.JVM中的垃圾收集器有了解吗? 8.Java中类的加载机制 9.类加载器的分类 1.内存区域划分: 方法区、本地方法栈、堆、线程栈、程序计数器 方法区:方法区是一个线程之间共享的区域。... -
Android面经| 问题归纳
2019-04-16 22:15:54文章目录Android相关Broadcast的...内存泄露的场景有哪些?内存泄漏分析工具使用方法?如何避免OOM?如何实现进程保活数据库如何进行升级?SQLite增删改查的基础sql语句?Android屏幕适配AsyncTask、HandlerThread、I... -
图解JVM(五)——运行时数据区总结
2021-02-19 10:40:25Q1 : JVM内存模型,有哪些区,分别的作用? 类加载子系统将class文件加载到运行时数据区 class文件内容会按照规范加载到运行时数据区的不同区域 执行引擎通过运行时数据区进行指令执行 运行时数据区分类: ... -
面向对象内容学习整合
2020-12-18 16:40:33物以类聚,分类的思维方式,思考问题首先解决问题需要哪些分类,然后对分类进行单独思考,再对分类细节进行面向过程的思索 面向对象适合处理浮渣的问题,适合处理多人协作问题 从宏观上把握、从整体上合理分析,... -
网易互娱一面
2019-08-31 21:31:28总的来说都问的是C/C++对应的基础知识 1.static_cast与dynamic的区别 2.静态链接与动态链接及对应的库区别 3.虚函数概念及实现 4.const对应的那几种类型的区别const * int a等 ...9.内存分类有哪些,new,malloc的使... -
fasttext源码学习(1)--dictionary
2020-06-23 19:47:50dictionary主要存储词语和切分词及对应的id,因为fasttext能处理超大数据集,如果不使用一些方法,只是加载这些内容,内存就很容易爆掉,我们来看看有哪些关键方法。 一 词语数量控制 该方法在Dictionary::... -
大三学生拿下美团和华为实习offer,面经分享
2020-07-06 15:55:33每层都有哪些东西。 5:TCP可靠性。 6:拥塞避免和流量控制 7:与UDP区别 8:如何具体的挑选他俩。还有一堆计算机网络问题。 9:数据结构:栈与队列区别是啥? 10:开发中有哪些应用到栈和队列了呢?(我说了JAVA中... -
关于GC常用算法的研究
2017-06-22 15:51:59关于GC常用算法的研究 GC策略解决了哪些问题? GC策略采用的何种算法? 对象分类 对象对应的内存区域 ...既然是要进行自动GC,那必然会有相应的策略,而这些策略解决了哪些问题呢,粗略的来说,主要有以下几点。1、哪 -
java开发知识点--来自一位程序猿的心血
2020-10-29 17:04:35两年开发经验的java开发应该哪些知识点? 或者说,该如何学习java开发? 下面我总结了一下自己的复习的思路,从JVM到分布式 (以下都是主要的知识点,已省略Mybatis、Hibernate等框架) 复习提纲 文章目录一、JVM1.... -
基础//性能优化
2021-02-28 17:47:051.2 提升性能的方法有哪些? 1)加载资源优化 ①资源压缩合并,减少HTTP请求 ②非核心代码异步加载 → 异步加载方式 → 异步加载的区别 ③利用浏览器缓存 → 缓存分类 → 缓存原理 ④使用CDN 让资源加载更快 ⑤预... -
【JVM虚拟机】深入理解JVM垃圾回收算法
2020-02-18 14:02:41了解虚拟机就一定需要了解垃圾回收机制,人们很久就在思考这三件事:那些内存需要回收?什么时候回收?怎样回收?...引用的四种分类3、finalize()方法3、回收方法区二、垃圾回收算法1.标记—清除算法(... -
【狂神说JAVA】JVM快速入门-4
2021-02-11 18:41:3415、GC垃圾回收机制 ...堆里面的分区有哪些,Eden,from,to,老年区,说说他们的特点! GC的算法有哪些?标记清除法,标记压缩,复制算法,引用计数器,怎么用的? 轻GC和重GC分别在什么时候发生。 GC.. -
2021-3-2 java面向对象关键知识点总结
2021-03-02 10:23:10面向对象是一种分类的思维模式,思考问题首先会解决需要哪些分类。比如,建一栋房子,我们会分别找人建地基、盖楼房、安装门窗等等,最后分类下个个个细节再用面向过程一步步的解决。总而言之,面向过程与面向对象... -
牛客网刷题答案记录(一):百度计算机视觉
2021-03-02 12:23:40在共性上两类检测算法有哪些差异? One-stage:yolov1、yolov2、yolov3、SSD、RetinaNet Two-stage:Fast R-CNN、Faster R-CNN Two-stage检测算法的共性,以faster r-cnn为例,使用了复杂的网络用于每个候选区域的... -
c++面试题基础分享.doc
2020-03-24 21:40:59面对内存泄漏和指针越界,你有哪些方法? 48.变量的声明和定义有什么区别 49.sizeof是一个操作符,strlen是库函数 50.写一个“标准”宏MIN 51.简述strcpy sprintf与mencpy的区别 52.链表与数组的区别 53.简述... -
java 面试题 总结
2009-09-16 08:45:341、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括... -
JAVA面试题最全集
2010-03-13 13:09:10方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() ...