这几天面试整理一下问题和答案方便复习。框架
Spring工作原理或特点(ioc,di,aop)?Ioc 控制反转Di 依赖注入Aop 横切思想
Spring的AOP那些地方用过?横切思想,在权限管理,敏感词汇拦截,日志记录可以使用。
SpringMvc和strust2的区别?
SpringMvc是单例设计模式,springMvc特点:有rest风格,可以数据绑定。Strust2是非单例设计模式
Mybatis的作用?MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
Spring工作原理或特点(ioc,di,aop)?
Ioc 控制反转
Di 依赖注入
Aop 横切思想
Spring的AOP那些地方用过?
横切思想,在权限管理,敏感词汇拦截,日志记录可以使用。
SpringMvc和strust2的区别?
SpringMvc是单例设计模式,springMvc特点:有rest风格,可以数据绑定。
Strust2是非单例设计模式
Mybatis的作用?
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
#{}和${}的区别?#{}更安全,是预编译过的,会自动加双引,可以防止注入式攻击。${}不安全,字符串拼接,会被注入式攻击。
Hibanate缓存?一级缓存,存于session中。有事务提交时就被销毁。二级缓存,存于xml文件中。一般在查询时使用,提高效率,缓存中有要的数据就不用再次访问数据库。(像股票这种不支持脏数据,不能有缓存。)
JAVA基础Cookie和session的区别,cookie的生命周期怎么设置?Cookie 只能存字符串,存在本地中,能设置生命周期。Session 可以存对象,作用域介于浏览器开启到关闭。Cookie的生命周期可以通过max-age来设置有效期。
String和StringBuffer区别?String 不可变字符串,非线程安全。Stringbuffer 可变字符串,线程安全。
序列化?用关键字Serializable修饰,用于解决对象流输出是遇到的问题。序列化,把对象转换成字节码进行读取。反序列化,把字节码转成对应的对象。
线程和进程的区别?线程是进程的一部分。一个进程可以包含多个线程。
按值和按引用传递?值传递,只传递值。相当于传递了一个对象副本。副本的值被改变,原对象不受影响。引用传递是指对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象的改变会反映到实际的对象上。
抽象类和接口区别?接口的方法都是抽象方法,抽象类可以有非抽象方法。接口只能定义静态变量,抽象类都可以。抽象是单一继承,接口可以多重实现。
单例模式的好处?节省内存,一个类只有一个实例要知道饿汉模式(一开始就创建,定义时new出来)和懒汉模式(定义时为null,要用时才创建) 会写。
事务?一起完成,一起失败。ACID 原子性,隔离性,一致性,持久性。
集合的接口有哪些?线程安全的有哪些?Map,Set,list线程安全:vector,hashtable
反射作用?调用一些私有方法,实现黑科技。比如双卡短信发送、设置状态栏颜色、自动挂电话等实现序列化与反序列化,比如PO的ORM,Json解析等实现跨平台兼容,比如JDK中的SocketImpl的实现通过xml或注解,实现依赖注入(DI),注解处理,动态代理,单元测试等功能。比如Retrofit、Spring或者Dagger
前端技术Ajax的运用,有哪几种?$.ajax$.get$.post$.getJSON
JQuery选择器哪几种?标签选择器,类选择器,id选择器,子选择器。
Jq和js的区别?可以把jquery 理解成js的封装,使js更加简洁,快捷。它把相同的操作封装起来,使用的时候直接调用。
一个input的id是a,分别用js和jq获取值。然后删除这个标签?Js:document.getelementbyid("a").valueJq:$("a").val()删除标签可以用remove。
数据库Oracle数据库char和varchar的区别?CHAR的长度是固定的,而VARCHAR2的长度是可以变化的。
CHAR的效率比VARCHAR2的效率稍高。
CHAR(10)若输入数据的字符数小于10,则系统自动在其后添加空格来填满设定好的空间。若输入的数据过长,将会截掉其超出部分。VARCHAR(10)数据类型的存储长度为实际数值长度。
游标,存储过程,触发器?创建游标:create or replace package mypackage as type myCursor is ref cursor end package.往游标赋值:open获取游标里的值:fetch创建存储过程:Procedure入参用in 返回值用out调用:call procedureTrig
数据库连接(左连,右连,内连,外连)?左连,显示左表所有数据,右表没有的显示null右连,显示右表所有数据,左表没有的为null内连,只显示两边中共有的外连(完整连接),显示所有,没值的为null
怎么优化数据库?建立索引(聚集索引和非聚集索引)优化查询语句(limit 1)
数据库设计三范式?一,保持原子性,即列不可再分割(例:地址或是电话,电话可分公司电话和私人电话)二,非主键字段要依赖主键。避免冗余。(例:订单id,订单名称,订单时间,用户,地址。用户,地址应在用户表中。)三,普通字段不可相互依赖(表分离)
持续更新中。。。
#{}和${}的区别?
#{}更安全,是预编译过的,会自动加双引,可以防止注入式攻击。
${}不安全,字符串拼接,会被注入式攻击。
Hibanate缓存?
一级缓存,存于session中。有事务提交时就被销毁。
二级缓存,存于xml文件中。一般在查询时使用,提高效率,缓存中有要的数据就不用再次访问数据库。(像股票这种不支持脏数据,不能有缓存。)
JAVA基础
Cookie和session的区别,cookie的生命周期怎么设置?
Cookie 只能存字符串,存在本地中,能设置生命周期。
Session 可以存对象,作用域介于浏览器开启到关闭。
Cookie的生命周期可以通过max-age来设置有效期。
String和StringBuffer区别?
String 不可变字符串,非线程安全。
Stringbuffer 可变字符串,线程安全。
序列化?
用关键字Serializable修饰,用于解决对象流输出是遇到的问题。
序列化,把对象转换成字节码进行读取。
反序列化,把字节码转成对应的对象。
线程和进程的区别?
线程是进程的一部分。一个进程可以包含多个线程。
按值和按引用传递?
值传递,只传递值。相当于传递了一个对象副本。副本的值被改变,原对象不受影响。
引用传递是指对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象的改变会反映到实际的对象上。
抽象类和接口区别?
接口的方法都是抽象方法,抽象类可以有非抽象方法。
接口只能定义静态变量,抽象类都可以。
抽象是单一继承,接口可以多重实现。
单例模式的好处?
节省内存,一个类只有一个实例
要知道饿汉模式(一开始就创建,定义时new出来)和懒汉模式(定义时为null,要用时才创建) 会写。
事务?
一起完成,一起失败。
ACID 原子性,隔离性,一致性,持久性。
集合的接口有哪些?线程安全的有哪些?
Map,Set,list
线程安全:vector,hashtable
反射作用?
调用一些私有方法,实现黑科技。比如双卡短信发送、设置状态栏颜色、自动挂电话等
实现序列化与反序列化,比如PO的ORM,Json解析等
实现跨平台兼容,比如JDK中的SocketImpl的实现
通过xml或注解,实现依赖注入(DI),注解处理,动态代理,单元测试等功能。比如Retrofit、Spring或者Dagger
前端技术
Ajax的运用,有哪几种?
$.ajax
$.get
$.post
$.getJSON
JQuery选择器哪几种?
标签选择器,类选择器,id选择器,子选择器。
Jq和js的区别?
可以把jquery 理解成js的封装,使js更加简洁,快捷。它把相同的操作封装起来,使用的时候直接调用。
一个input的id是a,分别用js和jq获取值。然后删除这个标签?
Js:document.getelementbyid("a").value
Jq:$("a").val()
删除标签可以用remove。
数据库
Oracle数据库char和varchar的区别?
CHAR的长度是固定的,而VARCHAR2的长度是可以变化的。
CHAR的效率比VARCHAR2的效率稍高。
CHAR(10)若输入数据的字符数小于10,则系统自动在其后添加空格来填满设定好的空间。若输入的数据过长,将会截掉其超出部分。VARCHAR(10)数据类型的存储长度为实际数值长度。
游标,存储过程,触发器?
创建游标:create or replace package mypackage as type myCursor is ref cursor end package.
往游标赋值:open
获取游标里的值:fetch
创建存储过程:Procedure
入参用in 返回值用out
调用:call procedure
Trig
数据库连接(左连,右连,内连,外连)?
热门评论
谢了楼主,真的很有用。