面试小总结
来源:互联网 发布:清华斯维尔软件下载 编辑:程序博客网 时间:2024/05/18 15:29
String s1=new String("abc")
创建了两个对象 分别在堆和常量池
内存:
栈 :变量、对象引用,方法运行区
堆: 创建的对象,类,常量池
多态,就是父类的引用指向了子类的实例,运行时注入的是哪个就是哪个
基本类型的传递是值传递,是一个值的附件,不能更改原值
对象引用 是传递了一个指向内存地址的引用,通过这个引用可以改变这个内存地址上的内容
String 传递了一个指向内存地址的引用,然后这个引用指向了另外一个常量,所以之前的值不变
对象加载顺序
从父到子 静态先行 静态代码 只此一次
父静态>子静态>父普通代码块>父构造函数>子普通代码块>子构造函数
集合
1 ArrayList LinkedList Vetty的关系
Vector是线程安全的,速度慢
LinkedList和ArrayList是线程不安全的,速度快
可以使用
Vector和ArrayList都是Object数组结构,是有序不排重的,查询可按照序号索引,但是插入设计到数组元素移动
LinkedList是双向链表,是node <T>,查询需要向前向后遍历移动指针,而插入只要改变前后连接关系就行
默认初始容量是16,负载英子是0.75,也就是数组到了12就扩容一倍
HashSet底层是HashMap, 它实际上是使用了HashMap的key来装所有的元素
HashMap底层是数组加链表:首先比较key的HashCode,如果相同,再比较equels
数组中装的是entry
保证线程安全可以使用currentHashMap
线程:对象锁,类锁
新建(new) --> 就绪(start)-->运行(获得cpu)-->
|
阻塞(放弃cpu:包括sleep join(不放锁等待然后记录了就绪),wait(放弃锁进入等待池,然后通过notify到然后得到锁到就绪))
jdbc
加载驱动 获得连接 创建statement 执行语句 处理结果 关闭资源
数据库事务:隔离级别
transtion
savePoint
rollback
commit
redis有部分事务
语法错误支持事务
运行错误不支持事务
watch监视Key在事务之前版本有没有发生变化
反射:
获得类对象
Teacher.class
new Teacher().getClass()
Class.forName("Teacher")
通过类对象创建对象
class.newInstance()创建对象
public class Singleton{
private SingleTon();
private static SingleTon instance=null;
public static syncronisid SingleTon getInstante(){
if(instante==null)
instance=new SingleTon;
return instance;
}
}
servlet web容器启动加载 init
请求调用 service()
服务器关闭 destroy
jsp内置对象,request,response,out,page,session,pageContext,application,
自定义标签,写一个思想tag接口的类
写一个tld文件描述
在jsp中引入tld文件
jsp静态包含和动态包含
指令<%@ include %> 编译时包含
标签<jsp:include > 运行时包含
框架
Spring
bean的生命周期
----------容器启动-------------------
bean的构造函数
bean的set函数
实现beanNameAware注入BeanName
实现BeanFactoryAware注入setBeanFactory
调用BeanProseer的postPoroseBeforeInit
实现InitBean的调用postAfterProperSet()
调用init()
调用BeanProse的postProceAfterInit
----------销毁容器------------
实现DisposabeBean的destory
执行desrtroy方法
对象的创建方式
1 构造函数
<bean name="user" class="com.bless.springdemo.vo.User"></bean>
2 静态工厂
<bean name="staticFactoryDao" class="com.bless.springdemo.factory.DaoFactory" factory-method="getStaticFactoryDaoImpl"></bean>
3 实例工厂
<bean name="daoFactory" class="com.bless.springdemo.factory.DaoFactory"></bean>
<bean name="factoryDao" factory-bean="daoFactory" factory-method="getFactoryDaoImpl"></bean>
对象属性的注入方式
1 构造函数
<!--(2)创建构造器注入,如果主类有带参的构造方法则需添加此配置-->
<constructor-arg ref="springDao"></constructor-arg>
2 Setter方法
<property name="springDao" ref="springDao"></property>
AOP 动态代理 jdk的接口代理,cglib的继承代理
SpringMvc
dispacherServlet找handMapping映射器处理器 得到handler和intecepter
dispacherServlet找handleAdeptaer处理执行这个handler和intecepter得到modelAndView
dispacherServlet找ViewReslvor视图解析器从modelanview中得到相应的view视图对象(将模型数据填充到视图中)
dispacherServlet将model和view进行渲染的到的页面通过response响应给用户
中文乱码 可以通过配置spring的caractorEncodingFilter过滤器
myBatis
是将jdbc操作数据库的过程进行封装,开发者不用关心注册驱动,获得连接,创建statement,处理结果集,释放连接的过程
只需要关注sql本身
两个配置文件,Mybatis配置文件创建回话工厂,sessionFactory
mapper.xml中的每一条sql对应一个statement对象
数据库
mysql执行顺序
from a join on
where 非select别名
group By
having
select
order by
limit
索引,排序+检索
主键索引,普通索引,唯一索引,联合索引(最左前缀)
索引Hash和Btree类型
hash只能等号查询,不能范围查询,类似于HashCode()方法比较
btree有三层,需要发生3次IO,叶子节点装真实的数据,所以值越分散,重复率越低,索引效果越好
explain:
id 越大,越上越先执行
select_type 针对普通查询,子查询,聚合查询
type system>const>eq_ref(一条)>ref(多条)>range(范围索引)>index(全局索引)>all(全表扫描)
possibleKey
key
key_len 越大越好
rows 越小越好
extra Using filesort(和索引不一样的排序) Using Temporary(排序使用了临时表)
using index(覆盖索引,要找的和索引相匹配,都不用查真正的表)
注意:
select * 取消了覆盖索引
联合索引没有用到第一个索引,或者中间的索引用到了>或者<
索引列上做任何操作,计算函数or <> != is null is not null
字符串 %加载前面 或者不加单引号
linux
源码安装(之前要gcc编译) tar 解压缩-》进入解压缩目录--》编译安装指定安装位置config -prefix -->make-->make install-->启动
rpm编译后的二进制包 rpm -ivh rpm -list rpm -qa rpm -e
yum etc/yum.repos.d/下面配置yum源,可以自动查找依赖,yum install
绝对路径执行可执行文件,service启动 (前提/etc/rc.d/init.d下面有这个执行命令)
top
ps -ef|grep http
ps aux|grep pid
Jdk 解压,更改而配置文件 etc/profile文件
redis
5种 String list set hash zSet(在set上加了一个sort值)
C强一致性 A 高可用性 P 分布式容忍性
redis-server
redis-cli
rdb:默认开启,有规则的存储内存中的快照,保存domp.rdb文件,也可以手工保存save,恢复,对应目录下启动redis
aof:默认关闭,每一秒存储写操作命令,redis-check-aof --fix修复,AOF重写:配置重写的大小是上次rewrite大小的一倍且文件大于5-8G
aof优先加载,rdb作为备份
事务:一个队列中,有顺序,一次性,排他性执行
muiti 开启,入队
exec 执行 (编译错误回滚,运行错误到错误点结束)
discard 回滚所有命令
watch 监视 乐观锁,cas CheckAndSet
发布订阅:pub sub
主从复制,读写分离:replication info
master/slave
配置文件中replication 模块中的slave of ip port
命令 slave of ip port
新货相传
反客为主 slave of no one 在薪火相传的基础上,主机挂了,进行反客为主,然后更改程序里面的指向
哨兵模式 反客为主的自动版,
1 新建sentinel.conf 文件,配置哨兵监视 sentinel monitor ip port 1
2 启动哨兵 ./sentinel.conf
3 在主机挂了的情况下,哨兵自动将投票高的变成主机
创建了两个对象 分别在堆和常量池
内存:
栈 :变量、对象引用,方法运行区
堆: 创建的对象,类,常量池
多态,就是父类的引用指向了子类的实例,运行时注入的是哪个就是哪个
基本类型的传递是值传递,是一个值的附件,不能更改原值
对象引用 是传递了一个指向内存地址的引用,通过这个引用可以改变这个内存地址上的内容
String 传递了一个指向内存地址的引用,然后这个引用指向了另外一个常量,所以之前的值不变
对象加载顺序
从父到子 静态先行 静态代码 只此一次
父静态>子静态>父普通代码块>父构造函数>子普通代码块>子构造函数
集合
1 ArrayList LinkedList Vetty的关系
Vector是线程安全的,速度慢
LinkedList和ArrayList是线程不安全的,速度快
可以使用
Vector和ArrayList都是Object数组结构,是有序不排重的,查询可按照序号索引,但是插入设计到数组元素移动
LinkedList是双向链表,是node <T>,查询需要向前向后遍历移动指针,而插入只要改变前后连接关系就行
默认初始容量是16,负载英子是0.75,也就是数组到了12就扩容一倍
HashSet底层是HashMap, 它实际上是使用了HashMap的key来装所有的元素
HashMap底层是数组加链表:首先比较key的HashCode,如果相同,再比较equels
数组中装的是entry
保证线程安全可以使用currentHashMap
线程:对象锁,类锁
新建(new) --> 就绪(start)-->运行(获得cpu)-->
|
阻塞(放弃cpu:包括sleep join(不放锁等待然后记录了就绪),wait(放弃锁进入等待池,然后通过notify到然后得到锁到就绪))
jdbc
加载驱动 获得连接 创建statement 执行语句 处理结果 关闭资源
数据库事务:隔离级别
transtion
savePoint
rollback
commit
redis有部分事务
语法错误支持事务
运行错误不支持事务
watch监视Key在事务之前版本有没有发生变化
反射:
获得类对象
Teacher.class
new Teacher().getClass()
Class.forName("Teacher")
通过类对象创建对象
class.newInstance()创建对象
public class Singleton{
private SingleTon();
private static SingleTon instance=null;
public static syncronisid SingleTon getInstante(){
if(instante==null)
instance=new SingleTon;
return instance;
}
}
servlet web容器启动加载 init
请求调用 service()
服务器关闭 destroy
jsp内置对象,request,response,out,page,session,pageContext,application,
自定义标签,写一个思想tag接口的类
写一个tld文件描述
在jsp中引入tld文件
jsp静态包含和动态包含
指令<%@ include %> 编译时包含
标签<jsp:include > 运行时包含
框架
Spring
bean的生命周期
----------容器启动-------------------
bean的构造函数
bean的set函数
实现beanNameAware注入BeanName
实现BeanFactoryAware注入setBeanFactory
调用BeanProseer的postPoroseBeforeInit
实现InitBean的调用postAfterProperSet()
调用init()
调用BeanProse的postProceAfterInit
----------销毁容器------------
实现DisposabeBean的destory
执行desrtroy方法
对象的创建方式
1 构造函数
<bean name="user" class="com.bless.springdemo.vo.User"></bean>
2 静态工厂
<bean name="staticFactoryDao" class="com.bless.springdemo.factory.DaoFactory" factory-method="getStaticFactoryDaoImpl"></bean>
3 实例工厂
<bean name="daoFactory" class="com.bless.springdemo.factory.DaoFactory"></bean>
<bean name="factoryDao" factory-bean="daoFactory" factory-method="getFactoryDaoImpl"></bean>
对象属性的注入方式
1 构造函数
<!--(2)创建构造器注入,如果主类有带参的构造方法则需添加此配置-->
<constructor-arg ref="springDao"></constructor-arg>
2 Setter方法
<property name="springDao" ref="springDao"></property>
AOP 动态代理 jdk的接口代理,cglib的继承代理
SpringMvc
dispacherServlet找handMapping映射器处理器 得到handler和intecepter
dispacherServlet找handleAdeptaer处理执行这个handler和intecepter得到modelAndView
dispacherServlet找ViewReslvor视图解析器从modelanview中得到相应的view视图对象(将模型数据填充到视图中)
dispacherServlet将model和view进行渲染的到的页面通过response响应给用户
中文乱码 可以通过配置spring的caractorEncodingFilter过滤器
myBatis
是将jdbc操作数据库的过程进行封装,开发者不用关心注册驱动,获得连接,创建statement,处理结果集,释放连接的过程
只需要关注sql本身
两个配置文件,Mybatis配置文件创建回话工厂,sessionFactory
mapper.xml中的每一条sql对应一个statement对象
数据库
mysql执行顺序
from a join on
where 非select别名
group By
having
select
order by
limit
索引,排序+检索
主键索引,普通索引,唯一索引,联合索引(最左前缀)
索引Hash和Btree类型
hash只能等号查询,不能范围查询,类似于HashCode()方法比较
btree有三层,需要发生3次IO,叶子节点装真实的数据,所以值越分散,重复率越低,索引效果越好
explain:
id 越大,越上越先执行
select_type 针对普通查询,子查询,聚合查询
type system>const>eq_ref(一条)>ref(多条)>range(范围索引)>index(全局索引)>all(全表扫描)
possibleKey
key
key_len 越大越好
rows 越小越好
extra Using filesort(和索引不一样的排序) Using Temporary(排序使用了临时表)
using index(覆盖索引,要找的和索引相匹配,都不用查真正的表)
注意:
select * 取消了覆盖索引
联合索引没有用到第一个索引,或者中间的索引用到了>或者<
索引列上做任何操作,计算函数or <> != is null is not null
字符串 %加载前面 或者不加单引号
linux
源码安装(之前要gcc编译) tar 解压缩-》进入解压缩目录--》编译安装指定安装位置config -prefix -->make-->make install-->启动
rpm编译后的二进制包 rpm -ivh rpm -list rpm -qa rpm -e
yum etc/yum.repos.d/下面配置yum源,可以自动查找依赖,yum install
绝对路径执行可执行文件,service启动 (前提/etc/rc.d/init.d下面有这个执行命令)
top
ps -ef|grep http
ps aux|grep pid
Jdk 解压,更改而配置文件 etc/profile文件
redis
5种 String list set hash zSet(在set上加了一个sort值)
C强一致性 A 高可用性 P 分布式容忍性
redis-server
redis-cli
rdb:默认开启,有规则的存储内存中的快照,保存domp.rdb文件,也可以手工保存save,恢复,对应目录下启动redis
aof:默认关闭,每一秒存储写操作命令,redis-check-aof --fix修复,AOF重写:配置重写的大小是上次rewrite大小的一倍且文件大于5-8G
aof优先加载,rdb作为备份
事务:一个队列中,有顺序,一次性,排他性执行
muiti 开启,入队
exec 执行 (编译错误回滚,运行错误到错误点结束)
discard 回滚所有命令
watch 监视 乐观锁,cas CheckAndSet
发布订阅:pub sub
主从复制,读写分离:replication info
master/slave
配置文件中replication 模块中的slave of ip port
命令 slave of ip port
新货相传
反客为主 slave of no one 在薪火相传的基础上,主机挂了,进行反客为主,然后更改程序里面的指向
哨兵模式 反客为主的自动版,
1 新建sentinel.conf 文件,配置哨兵监视 sentinel monitor ip port 1
2 启动哨兵 ./sentinel.conf
3 在主机挂了的情况下,哨兵自动将投票高的变成主机
阅读全文
0 0
- 面试小总结
- 腾讯面试小总结
- Java面试小总结
- 面试总结小谈
- 小的面试总结
- 面试小总结
- PHP面试体小总结
- IT公司面试小总结
- IBM面试后的一点小总结
- 前端面试js小总结(一)
- 数据结构与算法面试小总结
- 各种笔试面试经历小总结(1)
- Android实习面试总结:小公司带我飞!
- 面试:C语言C++小知识总结(1)
- 面试:C语言C++小知识总结(2)
- 一个Java小白的面试之旅总结
- 【面试】第一次面试总结
- 面试总结
- UVA
- 7个改变世界的Java项目
- POJ 2739
- React-Native 样式指南
- 探究游戏的前期开发需要了解的问题~
- 面试小总结
- Android Fabric工作原理
- Mutiple-layer_perceptron(MLP)
- python中eval, exec, execfile,和compile
- 锁的几点建议
- Eclipse集成Git使用(一)
- dhcp协议
- 获取本机MAC地址
- c++引用,什么时候函参必须使用引用?