Java学习之面试题整理
(面试题)Java基本数据类型和引用数据类型(2019年10月8日)
1,java 基本数据类型有几种?哪几种?(面试题)
答:8种 byte short int long float double char boolean
2,int类型是几个字节?(面试题)
答:4字节
3, int i = 3000000000; 编译能通过吗?原因是什么?(面试题)
答:不能 右边数据是int类型但超出了int类型的表示范围 大约20多亿(-2^31--2^31-1)
4,3默认是什么类型?3.14默认是什么类型?(面试题)
答:3默认int类型 3.14默认double类型
5,请问H的字符值(ASCII值)是多少?(面试题)
答:(A:65 a:97)
6,为什么 int a = 09;会报错
答:因为在进制表示中0开头的表示八进制,而八进制中不能出现大于7的数!
7,int a=3&4;请问a的值为多少
答:在java中,如果&前后都是数字,那么表示位运算符,按位与:先把十进制的数转化成为二进制,然后按位与,都为1的时候才是1,其余都为0
同理可知 | 在java中也是位运算符,按位或:先把十进制的数转化成为二进制,然后按位与,都为0的时候才是0,其余都为1
8,高类型向低类型转换需要强制转换吗?强制转换可能导致什么问题?
答:需要 可能导致精度丢失或溢出
9,String是基本数据类型吗?(面试题)
答:不是,是引用数据类型
10, int i=2; int b = i++ + ++i + i++ ; b等于多少?i等于多少?(面试题)
答:计算过程:第一个 i++ i先使用 再自增 2+ ++i + i++ 此时 i=3
到第二个 ++i i先自增 再使用 2+4 + i++ 此时 i=4
到第三个i++ i先使用 再自增 2+4+4 此时 i=5
一般可由有多少个 i++ 或 ++i 直接确定 i 的值 ,每出现一次直接加1
(面试题)循环语句(2019年10月10号)
1,下面程序运行的结果是什么?(面试题)
int i = 1 ;
while(i<=20){
i++;
i=i++ ;
System.out.println(" char长度为1,用单引号括起来。 ");
}
System.out.println(i);
答:程序陷入死循环 右边的运算结果为1 ,i永远都是1
(面试题)二维数组和方法(2019年10月11日)
1,打印星星
//定义五行
int hs = 5;
for (int i = 1; i <= hs; i++) {
// 打印空格
for (int j = 1; j <= hs - i; j++) {
System.out.print(" ");
}
// 打印*号
for (int j = 1; j <= i + i - 1; j++) {
System.out.print("*");
}
System.out.print("\n");
}
2,冒泡排序(面试题)
有一个数组{7,5,14,23,19,2,4},要求使用冒泡进行排序(从大到小)
public static void main(String[] args){
int [] arr={7,5,14,23,19,2,4};
//比较轮数
for(int i=1;i<arr.length-1;i++){
//从左往右,两两相比
for(int j=1;j<arr.length-1;j++){
//交换
if(arr[j]<arr[j+1]){
int temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
}
3,内存分配原理 (面试题)
(面试题)面相对象(2019年10月14日)
1,谈谈你对面向对象的理解?什么是类跟对象?(面试题)
答:面向对象是向现实世界模型的自然延伸,这是一种“万物皆对象”的编程思想。 类是对象的抽象 对象是类的具体实例。
面向对象有三大特性,封装、继承和多态。
封装就是将一类事物的属性和行为抽象成一个类,使其属性私有化,行为公开化,提高了数据的隐秘性的同时,使代码模块化。这样做使得代码的复用性更高。
继承则是进一步将一类事物共有的属性和行为抽象成一个父类,而每一个子类是一个特殊的父类--有父类的行为和属性,也有自己特有的行为和属性。
这样做扩展了已存在的代码块,进一步提高了代码的复用性。
如果说封装和继承是为了使代码重用,那么多态则是为了实现接口重用。多态的一大作用就是为了解耦--为了解除父子类继承的耦合度。
(这是主观题,不要死记,通过自己理解,然后可以在网上找一些答案,将和自己理解相近的记下来)
1,final的用法?(面试题)
答:1,当final修饰变量的时候,表示常量,内容不可以更改。
2,当修饰类的时候表示这个类不能够被继承。
3,当修饰方法的时候表示这个方法不能被覆写。
2,重载跟重写有什么区别?(面试题)
答:重写:子类与父类方法名相同,参数列表必须完全与被重写的方法相同,返回类型必须一直与被重写的方法相同,访问修饰符的限制一定要大于等于被重写方法的访问修饰符,重写最多一次。
重载:子类与父类方法名相同,必须具有不同的参数列表, 可以有不同的返回类型,可以有不同的访问修饰符,重载可以N次
3,java的3大特性是什么?
答:封装 继承 多态
(面试题)抽象类和静态属性以及静态方法(2019年10月17日)
1,抽象类是否一定有抽象方法?
答:不一定,但有抽象方法的类一定是抽象类
2,堆跟栈有什么区别?
答:1,最主要的区别就是栈内存用来存储局部变量和方法调用;而堆内存用来存储Java中的对象。无论是成员变量,局部变量,还是类变量,它们指向的对象都存储在堆内存中。
2,栈空间比较小;堆空间比较大。
3,说下有哪几种访问修饰符?他们有什么区别?(面试题)
答:public protected default(不写) private 权限由高到低
private :只有同类可以直接访问
default(不写):同类,同包可以直接访问
protected:同类,同包和子类可以直接访问
public:同类,同包,子类和不同包的类都可以直接访问
4,java内存结构分为哪几部分?(面试题)
答:栈,堆,方法区,程序计数器,本地方法栈(native)
5,构建对象会经历哪些步骤?(面试题)
答:1,访问方法区看类是否已经被加载,如果没有先加载(静态成员会在第一次加载时初始化)
2,然后通过关键字new在堆中申请空间,初始化对象
3,执行方法里面的逻辑
6,静态方法中可以调用非静态的变量吗?非静态的方法中可以调用静态的变量吗?(面试题)
答:静态方法不可以调用非静态的变量,非静态方法可以调用静态的变量
(面试题)String,Random,Math 等一些Object对象(2019年10月22日)
1.请列举switch case中可以填写的类型
答:byte short int char String enum
2.请判断下面生成了几个对象
String a="dax";
String b= new String("dax");
答:产生两个对象,一个在堆内存中 还有一个在方法区中的常量池中
3.请判断下面输出结果
String str6 = "b";
String str7 = "a" + str6;
String str67 = "ab";
System.out.println("str7 = str67 : "+ (str7 == str67));
答:结果是false,因为系统编译的时候不知道str6是一个变量,系统不会自动帮你完成字符串的拼接
3.请判断下面输出结果
final String str2 = "ab";
final String str3 = "cd";
String str4 = str2+str3; //
String str5 = "abcd";
System.out.println("str4 = str5 : " + (str4==str5));
答:输出的结果是true,由于里面都是字符串常量,结果可以在编译期间就确定下来,所以在class中已经是str1 = "abcd"
(面试题)ArrayList,HashSet以及HashMap(2019年10月23日)
1,看如下代码会输出什么
Integer i1 = 120 ;
Integer i2 = 120 ;
Integer i3 = new Integer(120);
Integer i4 = new Integer(120);
答: Integer 在类加载的时候会先在静态区中初始化好-128 127 之间的数值,如果在这个范围则直接重复使用,否则在堆中new一个Integer
120:true 由于10在范围内,所以使用共用静态区中的Integer
1000:false 由于1000在范围外,所以在堆中重新new一个Integer
2,ArrayList可以有重复的元素吗?元素是有序的吗?
答:有重复的元素,元素是有序的
3,ArrayList和Vector有什么区别
答:ArrayList是线程不安全的,效率高
Vector是线程安全的,效率低
4,有23个对象加入到HashSet中,初始化最小为多少
答:23/0.75=30.66...<32=2^5
所以初始化32个最好,又不会扩容。也不会浪费空间
5,写一个迭代器
// 迭代器遍历
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
6,List 跟Set Map的区别?
答:List:继承Collection接口,有序集合,允许重复元素。
Set: 继承Collection接口,无序集合,不允许重复元素,且最多有一个null值。
Map: Map是独立接口,key_value键值对存储数据;不允许重复元素。
7,Vector 跟ArrayList的区别是什么?
答:ArrayList线程不安全,效率高 ,扩容1.5倍;Vector 线程安全,效率低,扩容2倍。
8,说下java中的集合,说下ArrayList底层原理?
答: 对于ArrayList而言,它实现List接口、底层使用数组保存所有元素。其操作基本上是对数组的操作。
ArrayList定义只定义类两个私有属性:elementData存储ArrayList内的元素,size表示它包含的元素的数量。
9,说下ArrayList跟LinkList的区别?
答:Arraylist:底层是基于动态数组,动态数组就是改变数组容量方法,创建新的数组,指定新的容量(原来的1.5倍),将旧数组复制到新数组中并本类旧数组指向新数组
LinkedList:LinkedList的实现是基于双向链表,并实现队列(Queue),双向队列(Deque)接口
对于随机访问:ArrayList优于LinkedList 对于插入和删除操作:LinkedList优于ArrayList
LinkedList比ArrayList更占内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。
(面试题)异常处理(2019年10月25日)
1,final finally finalize有什么区别?
答:final修饰变量表示其不能改变,修饰方法表示其不能重写,修饰类表示其不能被继承
finalize当垃圾回收器回收时执行其中的逻辑
finally无论是否发生异常,最终都会执行其中的逻辑
2,throws throw 区别是什么?
答:throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁。
throw:则是用来抛出一个具体的异常类型。
3,写出5个常见异常?(面试题)
答:数组越界异常 (ArrayIndexOutOfBoundsException )
空指针异常 (NullPointException)
类转换异常 (ClassCastException)
算术异常 (ArithmeticException)
类不存在异常 (ClassNotFoundException)
待补充。。。。。
Java学习之面试题整理的更多相关文章
- Java笔试面试题整理第四波
转载至:http://blog.csdn.net/shakespeare001/article/details/51274685 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java工程师笔试题整理[校招篇]
Java工程师笔试题整理[校招篇] 隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打 ...
- Java笔试面试题整理第八波
转载至:http://blog.csdn.net/shakespeare001/article/details/51388516 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第六波(修正版)
转载至:http://blog.csdn.net/shakespeare001/article/details/51330745 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第五波
转载至:http://blog.csdn.net/shakespeare001/article/details/51321498 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第三波
转载至:http://blog.csdn.net/shakespeare001/article/details/51247785 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第二波
转载至:http://blog.csdn.net/shakespeare001/article/details/51200163 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第一波
转载至:http://blog.csdn.net/shakespeare001/article/details/51151650 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- java学习笔记系列整理说明
java学习笔记系列整理说明 陆陆续续也巩固学习java基础也有一段时间了,这里整理了一些我认为比较的重要的知识点,供自己或者读者以后回顾和学习.这是一个学习笔记系列,有自己的整理重新撰写的部分, ...
随机推荐
- C++程序设计学习
第一章 预备知识 1.C++历史起源 由于C语言具有许多优点,比如语言简洁灵活:运算符和数据类型丰富:具有结构化控制语句:程序执行效率高:同时具有高级语言和汇编语言的优点等.与其他高级语言相比,C语言 ...
- 排列组合算法的Java实现
转载于:http://cgs1999.iteye.com/blog/2327664
- [STL] Implement "map", "set"
练习热身 Ref: STL中map的数据结构 C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Re ...
- 阿里巴巴 Sentinel + InfluxDB + Chronograf 实现监控大屏
前言 在上一篇推文中,我们使用时序数据库 InfluxDb 做了流控数据存储,但是数据存储不是目的,分析监控预警才是最终目标,那么问题来了,如何更好的实现呢?用过阿里巴巴 Sentinel 控制台的小 ...
- word2vec之tensorflow(skip-gram)实现
关于word2vec的理解,推荐文章https://www.cnblogs.com/guoyaohua/p/9240336.html 代码参考https://github.com/eecrazy/wo ...
- 敏捷测试--之scrum--原理
Scrum 是一个用于开发和维持复杂产品的框架 ,是一个增量的.迭代的开发过程.在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2 ...
- mysql安装可能遇到的错误和安装过程
http://jingyan.baidu.com/article/8ebacdf02e392a49f65cd52d.html
- 23种设计模式之抽象工厂(Abstract Factory Pattern)
抽象工厂 当想创建一组密不可分的对象时,工厂方法似乎就不够用了 抽象工厂是应对产品族概念的.应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品.比如,每个汽车公司可能要同时生产轿车.货车. ...
- ZooKeeper单机服务端的启动源码阅读
程序的入口QuorumPeerMain public static void main(String[] args) { // QuorumPeerMain main = new QuorumPeer ...
- poi下载excel模板
/** * 下载模板 * @param tplName * @param returnName * @param response * @param request * @throws Excepti ...