JavaSE面试总结(一)

JDK和JRE的区别:

答:JDK是Java语言的开发工具包,包含JRE和开发工具包(java,exe等),JRE是Java的语言的运行环境,包含jvm和核心类库,jvm是Java的虚拟机,保证了Java的跨平台向性 JVM跨平台吗?

jvm是Java的虚拟机,不同的操作系统对应jvm不一样,jvm不具有跨平台性 保留字

保留字是还未使用的关键字,可能在Java以后的版本中使用,goto和const Java语言的特点:

完全面向对象性,跨平台性,开源,安全可靠,高性能性,多线程,健壮性, main是关键字吗

不是的,main是主函数的名字,能够被虚拟机识别,是程序执行的入口 path和classpath的区别:

path环境变量配置的是可执行文件.exe的执行路径,classpath配置的Java语言编译后声场的字节码文件执行路径 计算机最基本的存储单位是:字节

计算机直接识别的进制:二进制 变量和常量有什么区别:

变量在运算过程中的值是变化的,可以被多次赋值,常量则是固定的 变量数据类型的分类:

变量需要先定义,再赋值,再使用

基本数据类型:4类8种 byte short int long float double char boolean

引用数据类型:数组,类,接口 常量分类:

自定义常量:自己通过final修饰定义的常量

字面值常量:包括整数,小数,布尔,字符,字符串 byte的范围:-128 127

char的范围: 0 65535 long是8个字节,float是4个字节,为什么long比float小

底层的运算规则不同 ++和--的使用:

单独使用时,在前后都一样

参与运算时,在前是先自加或自减,在后是先参与运算,在进行自加或者自减 逻辑 | 与 短路 || 的区别

| 不管前面的是真是假都会运算, || 前面为真后面不参与运算,提高了运算的效率 逻辑 & 与 短路 && 的区别

& 不管前面是真是都会运算, && 前面如果为假的话,后面的不参与运算了,提高了运算的效率\ while和dowhile,for的区别:

do while 是先执行后判断

while和for先判断后执行,for循环结束后,其定义的初始化条件不能再使用 break和continue的区别:

break是完全跳出循环,continue是跳出本次循环,进行下次循环 方法重载和方法重写的区别:

方法重载是在同一个类中出现同名方法,参数列表不同,与返回值无关

方法重写在子类之间,子类出现和父类声明完全相同的方法时,就成为方法重写,重写要求返回值相同或者有字父类关系 构造方法,set方法后可以给成员变量赋值,这两种赋值的区别?

构造方法主要的作用是用来给对象初始化的,赋值只是他的兼职工作,也可以不赋值 静态代码块和构造代码块的区别:

静态代码块属于类,给类进行初始化,类一加载就会执行,只执行一次

构造代码块给对象进行统一初始化,每创建一次就会执行一次 四种权限修饰符:

public protectd 默认 private == 和 equal的区别:

"=="是比较运算符,既能比较基本数据类型,有可以比较引用数据类型,基本数据类型比较的是数值,引用数据类型比较的是地址值

equal是方法,重写equal方法比较的是对象的内容,如果没有重写将调用object的equal方法,比较的是地址值 string和stringBuffer和stringBuilder的区别:

string是一个特殊的引用数据类型,是一个长度不可以改变的字符序列,没有缓冲区,,一旦创建不可以改变,即使重新赋值不是在原来的基础上改变,而是重新创建了一个对象,将引用指向这个新的对象,浪费空间,效率比较低

stringBuffer和stringbuilder是一个容器,是可变的字符串序列

stringBuffer,线程安全的,效率比较低,

stringBuilder的底层是字符数组,线程不安全,效率比较高 集合体系:

JavaSE面试总结(一)

ArrayList与LinkedList的区别:

ArrayList的底层采用的数据的数据结构,查询慢,增删快

LinkedListd底层是链表,增删快,查询慢 数据结构的简单介绍:

栈:先进后出,压栈,弹栈

队列:先进先出

链表:每个元素都指向下一个元素

数组:一快连续的存储区域 线程和进程多线程:

进程是一个正在执行的程序,每个程序至少有一个控制单元,正在运行的程序

线程是进程中的控制单元,线程控制着进程的执行,是进程的执行路径

多线程:进程的多条执行路径,每个执行路径就是线程 多线程并发和多线程并行:

两个或多个任务发送请求时,CPU只能执行一个,就会交替执行这些任务,CPU会高速切换执行,这就是多线程并发

多线程并行,两个或者多个任务同时执行,前提是多核CPU 多线程的特点:具有随机性和和延迟性 线程的两种实现方式:

继承Thread类,好处是继承,代码简单,能够直接使用Thread的方法, 缺点就是扩展性差,应为继承了thread类,不可以再继承其他的类了

实现Runnable接口,好处就是扩展性比较强,缺点:代码比较多,无法直接使用Thread类 线程的生命周期:

新建 就绪 运行(可能发生阻塞和等待) 死亡 sleep和wait的区别:

sleep是让线程睡眠,必须给相应的时间,时间到了自动唤醒,睡眠的时候不放弃CPU的执行权利

wait是让线程等待,可以传参也可以不传参,传参是让指定时间后等待,需要被唤醒,等待的时间放弃CPU的执行权利 让线程暂停:

wait:让线程等待,等待的时候放弃CPU的执行权

yield:让线程暂停,并执行其他的线程 什么是IO流:

用来硬盘和内存之间交互数据的 IO流分类

JavaSE面试总结(一)

close和flush的区别:

flush是用来刷新缓存区的,刷新之后还是可以再次写出的

close是用来关闭释放资源的,关闭之后无法写出

本文为头条号作者发布,不代表今日头条立场。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值