前段时间都在泡图书馆,看《java核心技术卷1》。感觉好多东西会用了,但是并不知道底层实现原理,还有好多没见过的知识点概念。觉得果然还是要多读书。
接下来准备边读书,边把各种面试题提及的知识点好好学一下,然后再设计一个小项目,继续敲代码,以后就把每天的学习笔记写下来,以后需要的时候也可以自己来找找,还可以加深印象。Q:为什么要看面试题?
A:我发现好多面试题其实都是平时应用较多的概念,从一个小概念出发,然后可以拉扯延伸出来好多知识,把这些都学会了,应用上会更加得心应手。
注:问题答案仅供参考,而且答案只写我能了解的,能看懂的(有些地方逻辑可能不够清晰,还请谅解)摘抄参考的原文会标注出网址。如有侵权,联系删改。
-目标:
https://github.com/tangyouhua/program-resource/blob/master/program-interview/java-baidu-200.md
操作系统中 heap 和 stack 的区别**
http://blog.csdn.net/u014306011/article/details/51044091
堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。要点:堆,队列优先,先进先出(FIFO—first in first out)。栈,先进后出(FILO—First-In/Last-Out)。
二、堆栈缓存方式区别:
1、栈使用的是一级缓存
2、堆是存放在二级缓存中
Java中栈和堆的区别:
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。
堆内存用来存放由new创建的对象和数组,在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。
什么是基于注解的切面实现 @Aspect @AspectJ(切面)
切面学的实在是不怎么样,看了好多参考,还是看不懂,等以后学会了再回来补
什么是 对象/关系 映射集成模块 Object Relational Mapping,简称ORM
对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。
Spring 通过提供ORM模块,支持我们在直接JDBC之上使用一个对象/关系映射映射(ORM)工具,Spring 支持集成主流的ORM框 架,如Hiberate,JDO和 iBATIS SQL Maps。Spring的事务管理同样支持以上所有ORM框架及JDBC。
什么是 Java 的反射机制
反射是一种计算机处理方式。有程序可以访问、检测和修改它本身状态或行为的这种能力。能提供封装程序集、类型的对象。(程序集包含模块,而模块包含类型,类型又包含成员。)
优缺点:
优点:
1、反射提高了程序的灵活性和扩展性。
2、降低耦合性,提高自适应能力。
3、它允许程序创建和控制任何类的对象,无需提前硬编码目标类。
缺点:
1、性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。因此反射机制主要应用在对灵活性和拓展性要求很高的系统框架上,普通程序不建议使用。
2、使用反射会模糊程序内部逻辑;程序员希望在源代码中看到程序的逻辑,反射却绕过了源代码的技术,因而会带来维护的问题,反射代码比相应的直接代码更复杂。
什么是 ACID
数据库事务transanction正确执行的四个基本要素。
ACID,原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。
原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
原子性是指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。
多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
BS与CS的联系与区别
http://blog.csdn.net/hengbao4/article/details/52505427
Cookie 和 Session的区别
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
fail-fast 与 fail-safe 机制有什么区别
http://blog.csdn.net/ch717828/article/details/46892051
get 和 post请求的区别
百度随便一搜,有很多关于这个问题的文章,我看了大多数之后,觉得这篇写的很不错(仅代表个人观点)
http://www.techweb.com.cn/network/system/2016-10-11/2407736.shtml
Interface 与 abstract 类的区别
1.相同点
A. 两者都是抽象类,都不能实例化。
B. interface实现类及abstrctclass的子类都必须要实现已经声明的抽象方法。
2. 不同点
A. interface需要实现,要用implements,而abstract class需要继承,要用extends。
B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。
C. interface强调特定功能的实现,而abstractclass强调所属关系。
D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration,没有方法体),实现类必须要实现。而abstractclass的子类可以有选择地实现。
2017年12月6日