面试题

面试题:
一、请简述jdk、jre和jvm
* a: JRE为Java的运行时环境,是运行Java程序依赖的。如果仅仅是运行已经存在的Java程序,只安装JRE即可
* 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可
* JRE:JVM+类库
* b: JDK为Java的开发环境,是开发时依赖的。包含JRE
* JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。
* 其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等
* JDK:JRE+JAVA的开发工具
* 为什么JDK中包含一个JRE呢?
* 开发完的程序,需要运行一下看看效果

二、goto和const是关键字吗?
* goto与const是Java中的保留字,即没有赋予特殊含义却仍被Java占用的单词,类似Editplus这样的高级记事本,针对关键字有特殊的颜色标记,非常直观

三、基本数据类型各占用多少字节?
* a: 整数型(精确)
* int 占用4个字节 (整数的默认值)
* byte 占用1个字节
* short 占用2个字节
* long 占用8个字节
* long类型在赋值时,需要在值后加入字母l(L)区分其是一个长整型
如 int i = 100; short s = 66; long l = 100L;
* 2:浮点型(小数型,非精确,为近似值)
* double 占用8个字节 (小数的默认值)
* float 占用4个字节
* float类型在赋值时,需要在值后加入字母f(F)区分其是一个长整型
如 double d = 100.0; double d2 = 10.1; float f = 100F;

    * b:字符型
        * 占用2个字节,必须使用’’包裹,且不能为空,如 char   c = ‘a’; char  c2 = ‘中’; char  c3 = ‘ (空格)’; char c4 = ‘$’
        * 字符存储原理
            * 每一个值在存储时,均存储的为值对应的数字,每一个英文字符都有其固定的数字对应,英文字符与数字的对应关系组成了一张编码表,该表名称为ASCII表('A':65,'a':97,'0':48)
        * 转义字符
            * 有时无法直接给出一个字符,需要使用转义字符进行转义。转义字符也为一个字符,由转义符号与被转义字符组成转义符号:\
            * \t    制表符
            * \’        单引号
            * \”        双引号
            * \\        反斜杠
    * c: 布尔型
        * 代表一些条件成立与不成立的判断。只有两个值true与false
        * boolean占用1个字节,如 boolean  b = true; boolean  b2 = false;

Day02面试题:
1、第一题:
byte b1=3,b2=4,b;
b=b1+b2; 错: bi和b2会自动提升int类型,在赋值给byte类型会损失精度
b=3+4; 对: 常量优化机制 , 编译是会算出7,然后在byte范围内
哪句是编译失败的呢?为什么呢?
第二题:
byte b = 10;
b++; 对,系统自动强制转换
b = b + 1; 不对,损失精度
哪句是编译失败的呢?为什么呢?

2、自增和自减 放在数值的前后各有什么区别?
a:单独使用:
* 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
b:参与运算使用:
* 放在操作数的前面:先产生副作用,把原值先自增或自减,然后在参与运算
* 放在操作数的后面:先使用原值参与运算,然后再把原值自增或自减。

3、除以0可以吗?会报什么错误?
/(除法)和%(取模)的注意事项
* a: 整数做被除数,0不能做除数,否则报错
* b: 小数做被除数,整除0结果为Infinity,对0取模结果为NaN //Infinity:无穷大

4、&&和&有什么区别?
&& 短路与,即并且,有假则假,同时满足两个条件
特点:&&具有短路效果。左边是false,右边不执行

5、||和|有什么区别?
同上

6、三元运算符的格式?
b: 使用格式
* (条件表达式)?表达式1:表达式2;

==========================================

Day04面试题:
1、数组常见的异常?
* 空指针异常(NullPointerException)
举例:int[] arr = null;
* 数组索引越界异常(ArrayIndexOutOfBoundsException)
举例:int[] arr = new int[5]; 获取arr[6]的时候就会出现索引越界

2、什么是方法的重载?方法的定义格式和使用方式
A:定义
* 在同一个类中,出现方法名相同而参数列表不同,这样定义方法叫做方法重载。
B:注意事项:
* 和返回值类型无关
* 方法名必须一样
* 参数不一样
C:方法重载举例
* public int add(int a,int b) {逻辑} //两个数加法
* public int add(int a,int b,int c) {逻辑} //三个数加法
* public int add(int a,int b,int c,int d) {逻辑} //四个数加法

3、什么是成员变量?
2、成员变量
A:什么时候使用成员变量:
当类中所有的方法都需要使用的时候,就要把这些变量定义在成员位置
B:定义位置
* 直接定义在类中方法外的变量,叫做成员变量。
C:作用域
* 定义在方法内,变量只在方法内起作用,而定义在类中,可以被本类中的所有方法访问

3、成员变量知识补充
    A:如果很多方法都要访问某个数据,就需要将这些数据定义在成员位置
    B:前面的代码中所有变量都是用static修饰的为什么呢?
        因为main方法是static修饰的。这样main方法调用其它方法时也必须是静态的,而静态方法访问属性时,属性也必须是静态的
        总而言之:静态的只能访问静态的

=========================================

Day05面试题:
1、ArrayList的定义格式和使用
ArrayList的使用
A:导包:import java.util.ArrayList;
B:创建对象:
类名<集合内元素类型> 变量 = new 类名<集合内元素类型>();
ArrayList<Integer> list = new ArrayList<>();
例如:?
介绍菱形泛型?
* 注意:基本类型需要存放对应的引用类型
ArrayList<Integer> yyYY = new ArrayList<Integer>();
ArrayList<Double> zzZZ = new ArrayList<Double>();
C:调用方法:
* 直接向集合添加元素:add(元素);
* 在指定索引处向集合添加元素:add(索引,元素);
* 删除指定索引位置的元素:remove(索引);
* 修改指定索引位置的元素:set(索引,元素);
* 获取集合长度:size();
* 根据指定索引获取集合元素:list.get(索引);

2、ArrayList集合与数组的区别
A:为什么使用ArrayList
* 虽然数组容器效率最快,但是开发中我们使用的数组并不多。因为它的长度不可变!
* 而使用ArrayList集合,它的底层也是数组实现的,效率一样,但是ArrayList的长度是可变的。
* 并且可以调用功能强大的方法来满足不同需求
B:ArrayList集合与数组的区别
* 数组长度不可变,可以存储任意类型,有索引
* 集合长度可变,只能存储引用数据类型(存储基本数据类型时会自动转成对应的引用数据类型),也有索引
* 数组并没有提供操作其元素的方法,而集合提供了很多方法操作其元素
* int->Integer
* double->Double
* float->Float
* char->Character

=============================================

面试题:
1、Scanner类的next()方法和nextLine()方法的区别?

=============================================

Day07面试题:
1、什么是面向对象?
面向对象是软件开发过程中使用的一种思维方式.将功能封装进对象,强调具备了功能的对象.不关注过程.
是一种更符合人们思考习惯的思想,可以将复杂的事情简单化,将程序的执行者转换成为指挥者.

2、面向对象的三大思想特征是什么?
封装
继承
多态

3、成员变量和局部变量的区别有哪些?
* 成员变量
* 定义位置:类中,整个类中均可以访问。
* 内存:成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
* 默认值:成员变量有默认值。
* 回收:随着对象的回收而回收。
* 局部变量
* 定义位置:定义在局部范围,如方法内,语句内等。
* 内存:局部变量存在于栈内存中。
* 默认值:没有默认值。
* 回收:随着作用域结束而回收,通常为语句或方法范围。
* 变量访问原则
* 就近原则
* c: 注意
* 成员变量的访问不再使用从前的方式,而使用调用属性对应的get/set方法的方式。即类的使用不再包含直接使用对象访问属性,均是在调用方法。

4、什么是封装?封装的好处,原则分别是什么?
* 把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是封装。
* 封装的结果是一个同时带有特征和行为的数据类型。
* 我们前边所完成的水果项类的定义就是封装的一部分。同样,成员变量与成员方法以及对应的private修饰,公共的get/set方法均为封装的一部分。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容