综合了网上的一些面试经,整理出来一部分资料,后续会有补充,希望大佬们多多指点!
首先heap是堆,stack是栈,stack的空间是由操作系统自动分配和释放,heap的空间是手动申请和释放的;heap的空间是手动申请和释放的,heap常用new字来分配;stack的空间有限,heap的空间是很大的自由区。在java中,如果只是声明一个对象,则在栈内存中为其分配地址空间,若将它实例化,则在堆内存中为其分配空间。
Obiect a =null;//只在栈内存中分配空间
Object b=new Object()//在堆内存中分配空间
object/relation mapping 也就是面向对象编程中的对象和关系数据库的关系的一个映射。是为了按照对象的概念进行开发和存取,也就是作为开发人员不必管数据库怎么存储,只需要知道保存的是对象就行了。
数据库事务正确执行的四个基本要素的缩写,包括原子性(atomiciy),一致性(consistency),隔离性(Isolation),持久性(Durability),否则在事务过程中无法保证数据的正确性
BS是browser-server,通过浏览器去访问服务器
CS是client-server,通过客户端去访问服务器
cookie数据存放在客户的浏览器上,session数据存放在服务器上
cookie的安全性不高,别人可以通过分析存放在本地上的cookie进行用户信息盗取;session会在一定时间保存在服务器上,当访问增多的时候会比较占用服务器的性能
session是通过cookie来工作的,session和cookie之间是通过$_COOKIE['PHPSESSID'] 来联系的,通过$_COOKIE['PHPSESSID'] 可以知道session的id,从而获取到其他的信息。
fail-fast机制:
在遍历一个集合时,当集合结构被修改会抛出Concurrent Modification Exception fail-fast会在这两种情况抛出该异常: 单线程环境:集合被创建后,在遍历它的过程中修改了结构 多线程环境:当一个线程正在遍历这个集合而另一个线程对这个集合的结构进行了修改 如何检测:迭代器在遍历过程中是直接访问内部数据的,因此内部的数据在遍历的过程中无法被修改,为了保证不被修改迭代器内部维护了一个标记,mode,当集合机构发生改变的时候(添加删除或修改),mode会被修改,而迭代器的每次的hasNext()和next()方法都会检查该mode是否被改变,当检测到被修改时会抛出Concurrent modification excepetion
fail-safe机制:
任何对几个结构的修改都会在一个复制的集合上进行修改,因此不会抛出Concurrent modification exception
fail-safe机制有两个问题:
需要复制集合,产生大量的无效对象,开销大 无法保证读取的数据是目前原始数据结构中的数据
一般是在浏览器中输入网址访问资源都是通过get方式,在表单提交中,可以通过Method来指定提交方式为post和get,默认为get提交,get一般用于获取/查询信息,而post一般都用于更新资源信息。
从设计初衷上来讲,GET用来实现从服务器端获取数据,POST用来实现向服务器端提出请求对数据做某些修改
从安全的角度来说,POST的请求只需要加body,而GET请求直接拼链接就可以,成本不同
一个类实现接口必须实现接口里面的所有方法,而且一个类可以实现多个接口(相当于多继承),接口和抽象类使用的关键字都不同,一个类只能继承一次,继承抽象类的话是可以不全部实现它的所有方法,但是你可以重写它的方法
抽象类中可以有实例方法和变量,可是接口中的方法全部都是要实例方法接口中不允许存在变量都是常量,换句话说接口就是彻底的抽象类
IOC控制反转,是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。控制反转一般分为两种类型,依赖注入个依赖查找
IOC的优点是实现组件之间的解耦,提高程序的灵活性和可维护性
NIO即java non-blocking IO .NIO和IO有相同的作用和目的但是实现方式不一样,NIO用到的是块,所以NIO的效率要比IO高很多,在java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO;IO面型流,NIO面向缓冲
Java 7:
File Syatem.getJavaIoTempDir();//IO临时文件夹
File System.getJavaHomeDir();//JRE的安装目录
File Systemm.getUserHomeDir();//当前用户目录
File System.getUserDir();//启动通过Java进程时所在的目录
Java 8:
public Interface Formula{
default double sqrt(int a){
return Math.aqrt(a);
}
}
备注:问题整理来源于唐尤华
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。