Java面试宝典摘抄
1,ClassLoader知识
加载流程:当运行一个程序时,JVM启动,运行bootstrap classloader,该classloader加载Java核心API(此时ExtClassLoader和AppClassLoader也在此时被加载),然后调用ExtClassLoader加载lib/ext中的类,AppClassLoader加载用户定义的类这就是基本流程
ClassLoader和Class.forName的区别:JVM加载类的时候分三步,装载,连接,初始化,
装载是指JVM找到相应的class文件。在默认情况下,ClassLoader加载类并不会对类进行解释和初始化,而Class.forName则在加载的时候对类进行解释和初始化,也就是说,用Class.forName来加载的类,都应该包含空参数的构造函数
2,
JVM使用的是unicode编码方法,
j=j++这个易错点,因为Java用了中间缓存变量的机制,
java的数值类型的包装类过度类型转换。
3,类型转换问题
system.out.println((a<5)?10.9:9);输出什么?答案是9.0,因为前面有一个10.9,所以,会自动转换为9.0而不是9。
Int i=10;
Char x=’x’;
system.out.println(false?i:x);
system.out.println(false?10:x);
输出分别为120,x
原因:第一个i是变量,所以,i和x都转换为int类型了,这时候输出x的值,120,第二个,java编程规范中提到,当两个表达式一个是常量,一个是类型T时,而常量表达式能够被T表示时,输出结果类型为T,也就是输出为x
类似:short x=1;x=x+1;出错,而shrot x=1;x+=1是正常的
结论:变量两者相加,先提升,然后相加,常量相加,先加法,看结果是不是再赋值的范围类型内
4, 逻辑字符&|^短路字符“&&”,“||”,“^^”,前者是判断是符号两边的都执行,后者是一旦一个条件符合,则不执行下一个条件判断
5,Final,finally,finalize的区别
- Final修饰符,修饰变量表示初始化赋值之后就是常量了,修饰类表示不支持继承,修饰方法表示不支持重写
- Finally是try,catch后面的,catch exception后执行
- Finalize是垃圾收集器清理对象的功能
6,传递和引用
基本原则:无论java参数的类型是什么,一律传递的是参数的副本,如果是值,则传递的是值的副本,如果是引用,则传递的是引用的副本,而引用是堆内存加栈地址,而这里传递的就是栈地址的副本,传递进去之后,如果这个引用改变,则其改变,若new一个新的对象,则这个地址就会指向新的对象,此时,引用的改变不会对原来的引用产生任何影响
7,静态方法可以调用非静态方法或者非静态变量么?
可以,可以传递带有非静态变量的对象作为形参
8,java的IO操作有面向字节和面向字符两种方式,面向字节的是以inputstream和outputstream为后缀的字节流,以reader,writer结尾的都是字符流
具体的类如下图所示:

9,序列化
实现serializable接口,就是将实现这个街交口的对象转换为一组byte,然后日后要用这个对象的时候,能把这些byte数据恢复出来
10,内存管理模块
内存管理,垃圾回收机制
判断一块内存空间是否符合垃圾回收的标准是满足下面两条中的一条
1, 给对象赋予了空值null,以后再也没有调用过
2, 给对象赋予了新值,即重新分配了内存空间
典型的内存泄漏原因如下
1, 全局集合,解决方法,a,周期性的运行某种清除任务,清除不需用的数据,b,使用反向链表计数,当反向连接数目为零时,该元素就可以从集合中移除
2, 缓存,用于快速查找已经执行的操作结果,解决方法,尽量移除缓存最久的对象
3, Classloader,
11,Clone方法在object类中,但是需要实现Cloneable接口来实现
12,不通过构造函数也能创建对象么?可以
1, 用new语句创建对象,这个最常用
2, 运用反射手段,调用java.lang.class,或者java.lang.reflect.Constructor类的newInstance()实例方法
3, 运用对象的clone()方法
4, 运用反序列化手段,调用java.io.objectinputstream对象的readobject()方法
13,多态中成员访问特点
- 成员变量,编译看左边,运行也看左边
- 成员方法,编译看左边,运行但看右边
- 静态方法,编译看左边,运行也看左边,原因,静态方法是和类相关的,和对象无关,所以不存在静态方法的重写。注意,与类相关,与对象无关
- 结论,由于成员方法存在方法重写,所以,其运行看右边
针对第三条,最容易犯错,例如,父类和子类有同一个静态方法jingtai(),如果father c = new child(),那么此时c.jingtai()执行的是父类的静态而不是子类的静态,这个就按照上面说的,静态方法与类相关,与对象无关,所以不存在静态方法的重写,所以,这个静态方法是哪个类的,就调用那个类的静态方法,很明显,c是father类的。
14,java接口的注意事项
通俗的讲,你认为要变化的东西,都不能放到接口中,只能放到你的实现中,放在接口中的都是虚方法或者常量。接口是对一类事物的属性和行为的更高层次的抽象。对修改关闭,对扩展开放,接口是对开闭原则的一种体现。所以,接口的方法默认是public abstract,接口中不可以定义变量,只能定义常量,用final来修饰,所以接口的属性默认是public static final常量,且必须赋初值
15
Java面试宝典摘抄的更多相关文章
- java面试宝典(蓝桥学院)
Java面试宝典(蓝桥学院) 回答技巧 这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的学生在笔试/面试时更好地赢得好的结果.由于这套试题涉及的范围 ...
- Java 面试宝典-2017
http://www.cnblogs.com/nelson-hu/p/7190163.html Java面试宝典-2017 Java面试宝典2017版 一. Java基础部分........... ...
- Java面试宝典-2017
Java面试宝典2017版 一. Java基础部分........................................................................... ...
- Java面试宝典2018
转 Java面试宝典2018 一. Java基础部分…………………………………………………………………………………….. 7 1.一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制 ...
- Java面试宝典(2018版)
置顶 2018年11月10日 23:49:18 我要取一个响亮的昵称 阅读数:8893 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chen ...
- java面试宝典2019(好东西先留着)
java面试宝典2019 1.meta标签的作用是什么 2.ReenTrantLock可重入锁(和synchronized的区别)总结 3.Spring中的自动装配有哪些限制? 4.什么是可变参数? ...
- Java面试宝典(1)Java基础部分
Java面试宝典 题目,日积月累,等到出去面试时,一切都水到渠成,面试时就自然会游刃有余了. 答题时,先答是什么,再答有什么作用和要注意什么(这部分最重要,展现自己的心得) 答案的段落分别,层次分明, ...
- JAVA面试宝典分享
JAVA面试宝典分享 前言 面试题 Java面试题(上) Java面试题(中) Java面试题(下) 参考答案 其他补充内容: 项目经验 项目介绍 项目开发流程 项目管理 系统架构 第三方工具(插件) ...
- 【转】Java面试宝典2015版(绝对值得收藏超长版)(一)
(转自:http://mp.weixin.qq.com/s?__biz=MjM5MTM0NjQ2MQ==&mid=206619070&idx=1&sn=fcb21001d442 ...
随机推荐
- async.whilst 的一个简化版实现
function whilst(condition, todo, fin){ var cb = function(){ if(condition()){ todo(cb); }else{ fin(); ...
- 华硕笔记本U盘启动系统/WinPE报错。Windows failed to start. A Recent hardware or software change might be the cause.
最近在整一台华硕笔记本,大概有5年寿命了吧,质量还行,由于系统出了问题,打算用自制U盘WinPE进去修复一下.按照个人经验,在主板设置里启用了USB启动选项,并且设置USB启动顺序为第一个,可是进系统 ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式发布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 2016年4月最佳的20款 jQuery 插件推荐
这个列表包括20个我们觉得是最有用的免费的 jQuery 插件,它们都是最具创新性和最省时省力的解决方案,很多都是现代化的设计和开发中碰到的问题的处理方案.如果你熟悉下面列出的任何插件,请与我们的读者 ...
- kmdjs指令大全
调试 通过下面方式,可以输出kmdjs声称的类: <script src="../dist/kmd.js?debug" data-main="js/main&quo ...
- ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave由于鼠标移动速度过快导致问题解决办法
记录两个项目开发中遇到的问题,一个是ECharts外部调用保存为图片操作,一个是workflow工作流连接曲线onmouseenter和onmouseleave事件由于鼠标移动过快触发问题. 一.外部 ...
- 【Swift】iOS开发历险记(一)
前言 边开发边学习,边攒经验,汇总一下记录到这里 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblog ...
- iOS 字典与JSON相互转换
iOS 字典与JSON相互转换 首先简单说一下为什么会写这种幼稚的文章. 现在的网络请求几乎都是AFN完成的,AFN也为我们写了了JSON转换字典的方法,但是不要忘记后台是一个很爱用JSON的人群,H ...
- 学习Swift的点点滴滴
1.类型标注 之前不知道为啥别人写的Swift语言的时候,定义常量或者变量的格式是 常量: let 常量名: 常量类型 = 常量值 或者 变量: var 变量名: 变量类型 = 初始值 原来书上有记 ...
- Play Framework 完整实现一个APP(三)
1.添加Post类 package models; import java.util.*; import javax.persistence.*; import play.db.jpa.*; @Ent ...