面试题:static的作用有什么作用

1、权限管理有几张表,并画出简单的uml图(很重要),权限管理的框架有哪些
(RBAC权限模型 )
权限管理的框架有:shrio、Spring Security
2、servlet是什么以及流程,servlet的步骤,问的深一点会问init和destroy作用
Servlet是一种java技术,处理web网页操作,生成动态Web内容
servlet的步骤:
1,new 创建实例化对象、加载
2,init 初始化操作(如ServletConfig配置文件、只会被初始化一次)
3,servic(ServletRequest请求信息,ServletResponse响应)
  得到用户以GET/POST形式传递过来的参数,进行内部处理,把结果以流的形式发送给客户端
4,destory(清理无用对象 只会执行一次)
3、集合有哪些
Collection接口下有List、Set、Queue接口
List接口(关注事物的索引):
ArrayList:有序,可重复,有索引,它提供快速迭代和快速随机访问的能力
LinkedList:有序,查询慢,增删快,元素之间双链接
Vector:是ArrayList的线程安全版
Set接口(关注事物的唯一性 ):
HashSet:无序,不可重复,底层是哈希表,不同步,提高了查询效率
TreeSet:有序,不可重复,二叉树
LinkedHashSet:有序,以哈希表存,按链表方式记录
Queue接口(关注事物被处理时的顺序):
LinkedList
Map接口下有:
HashMap 键值对集合,底层是哈希表,线程不同步,允许KEY,VALUE为NULL
TreeMap 对键可排序
HashTable:底层是哈希表,同步,不允许KEY,VALUE为null,HashMap的线程安全版,效率低
4、数据库优化(从设计表(三大范式,消除冗余),创建表、使用表(sql语句方向考虑(百度很多)))
三大范式:
第一范式(原子性):表中的每个列都是不可再分的最小数据单元
第二范式(单一性):属性完全依赖于主键
第三范式(直接依赖性):属性不依赖于其他非主键
sql语句优化:
<span style="color: #)&尽量避免耗时操作。
带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL语句会启动SQL引 执行,耗费资源的排序(SORT)功能。DISTINCT需要一次排序操作, 而其他的至少需要执行两次排序
<span style="color: #)一般来说,如果使用UNION ALL能满足要求的话, 务必使用UNION ALL
UNION因为会将各查询子集的记录做比较
<span style="font-size: 15 color: #)&避免在WHERE子句中使用in,not& in,or 或者having。
exist 和not exist代替
in和not in。
可以使用表链接代替
Having可以用where代替,如果无法代替可以分两步处理。
<span style="color: #)&不要在建立的索引的数据列上进行下列操作(1)避免对索引字段进行计算操作
(2)避免在索引字段上使用not,&&,!=
(3)避免在索引列上使用IS NULL和IS NOT NULL
(4)避免在索引列上出现数据类型转换
(5)避免在索引字段上使用函数
例如:where trunc(create_date)=trunc(:date1)
虽然已对create_date
字段建了索引,但由于加了TRUNC,使得索引无法用上。此处正确的写法应该是
where create_date&=trunc(:date1) and create_date
(6)避免建立索引的列中使用空值。
<span style="color: #) 少用LIKE
<span style="color: #.如何设计一个高并发的系统
<span style="color: #)&数据库的优化,包括合理的事务隔离级别、SQL语句优化、索引优化
<span style="color: #)&使用缓存、尽量减少数据库IO
<span style="color: #)&分布式数据库、分布式缓存
<span style="color: #)&服务器的负载均衡
减少应用和数据库的交互次数、同一个sql语句的执行次数
5、IOC(原理、代码如何写(配置、注解)) 自动注入的关键(set方法)
IOC:控制反转,DI依赖注入,
依赖注入主要有四种实现方式:set注入、构造器注入、静态工厂注入、实例工厂注入
set注入:定义一个private的成员变量,写一个public的set方法,在xml中用property配置
构造器注入:定义一个private的成员变量,在action的构造方法中给成员变量赋值,在xml中用配置
6、hibernate的事务怎么来的(applicationContext.xml配置)
8、MVC原理
MVC模式是由三个子系统组成的,它们分别是:Model、View、Controller。
Model(模型),负责业务逻辑,数据访问;
View(视图),定义用户界面;
Controller(控制器),处理程序中的数据,链接View,Model。
9、webservice的协议(SOAP)以及用法,webservice的3种方式
10、项目中用到的设计模式、优化(要回答到很具体的点上)、算法等
单例模式、工厂模式、代理模式、动态代理11、aop原理作用12、每秒并发量在200左右,如何处理(存储过程)13、你会用前端那些框架(bootstrap等)14、多线程问题(同步,如何实现,多线程的几种状态),项目中是否使用过。
一、多线程实现方法有两种 :
一种是实现Runnable 接口  一种是继承Thread类。
&二、实现同步也有两种 :
一种是用同步方法,一种是用同步块。
同步方法就是在方法返回类型后面加上synchronized, 比如:public void * synchronized add(){...}。
同步块就是直接写:synchronized (这里写需要同步的对象){...}
三、多线程的状态:新建、等待、就绪、运行、阻塞、死亡。
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法, * 调用此方法要捕捉InterruptedException异常 * 。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程 ,而是由JVM确定唤醒哪个线程,而且不是按优先级& 。 Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
15、tomcat的文件夹问题
/BIN 启动和关闭tomcat的脚本文件
/CONF配置文件
(server.xml(修改服务器端口),web.xml(session过期时间,定义tomcat能够解析的信息),content.xml(配置全局公共信息))
/DOC(TOMCAT文档)
/server/lib(服务器所需的jar包)
/server/webapps(tomcat自带的两个Web应用,admin、manager)
/server/classes(附加的类)
/common/lib(所有WEB应用,TOMCAT可以访问的jar包)
shared/lib(所有WEB应用可以访问的jar包)
/logs(日志)
/src(tomcat源码)
/webapps(项目发布目录)
/work(jsp编译后产生的class文件)16、内连接 子查询 外连接 全部会用 而且知道什么意思
内连接 inner join
外链接 left join right join17、权限的数据保存在哪里(session或者缓存中),拦截18、jsp9大内置对象以及动作& 各有什么作用
request(客户端向服务端的请求)\response(服务端对客户端的响应)\
application(保存应用系统中的公用数据)\session(会话,为了保护客户端信息而分配给客户的对象)\pageContext(取得其他内置对象)
config(servlet配置)、out(向JSP页面输出信息,并且管理应用服务器上的输出缓冲区)、exception(异常)
page(JSP页面自身,只在JSP页面内有效)19、jsp7大动作指令
把数据转发给另一个页面处理
&jsp:forword page="另一个页面"&&/jsp:forward&
&jsp:param value="" name=""&
&jsp:include page=""&&/jsp:include&
实例化一个javabean
&jsp:useBean id="" class="" scope=""&&/jsp:useBean&
设定javabean的属性
&jsp:setProperty property="" value="" name=""/&
取得javabean的属性
&jsp:getProperty property="" name=""/&
&jsp:plugin&20、maven是否用过21、freemarker22、spring有哪些模块构成,简述各模块作用23、union 和 union all 区别
union是取得两个sql语句的并集,去掉了重复的值,效率较低
union all是取得两个sql语句的结果集合并,没有去掉重复的值,效率较高24、事务
25、你知道的连接池有哪些
26、拦截器与过滤器区别27、死锁
两个线程同时占有对方需要的资源,并都不放弃28、ioc中有哪些设计模式
create view as
由查询语句产生的虚拟表
30、spring有哪些东西,项目时使用了哪些
http://blog.csdn.net/justjackwang/article/details/880452832、有没有写过安卓或者ios接口
33、tomcat的端口号在哪里改
conf/server.xml
&connector port="8080"&34、内存溢出的解决方法35、怎样确定map中的key与value的对应关系36、spring的拦截器
37、map怎样循环遍历
用foreach遍历map.keySet/
用foreach或者Iterator遍历map.entrySet(Map.Entry&K,V& entry) /
用foreach遍历map.values()
38、map的数据结构
A:Map集合的数据结构仅仅针对键有效,与值无关。
B:存储的是键值对形式的元素,键唯一,值可重复。
HashMap底层数据结构是哈希表。线程不安全,效率高
哈希表依赖两个方法:hashCode()和equals()执行顺序:首先判断hashCode()值是否相同是:继续执行equals(),看其返回值是 true:说明元素重复,不添加是false:自动生成hashCode()和equals()即可
LinkedHashMap底层数据结构由链表和哈希表组成。由链表保证元素有序。由哈希表保证元素唯一。
Hashtable底层数据结构是哈希表。线程安全,效率低
TreeMap底层数据结构是红黑树。(是一种自平衡的二叉树)如何保证元素唯一性呢?根据比较的返回值是否是0来决定
如何保证元素的排序呢?两种方式自 然排序(元素具备比较性)让元素所属的类实现Comparable接口比较器排序(集合具备比较性)让集合接收一个Comparator的实现类对象
TreeMap中的所有的键值对都已经进行了排序进行数据的遍历是最快的。
39、map的有参构造器理解,了解过哪些map
HashMap提供了三个构造函数:
&&&&&& HashMap():构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。
&&&&&& HashMap(int initialCapacity):构造一个带指定初始容量和默认加载因子 (0.75) 的空 HashMap。
&&&&&& HashMap(int initialCapacity, float loadFactor):构造一个带指定初始容量和加载因子的空 HashMap。
initialCapacity初始容量 & &loadFactor加载因子(负载因子、默认值0.75)
&&&&&& 在 这里提到了两个参数:初始容量,加载因子。这两个参数是影响HashMap性能的重要参数,其中容量表示哈希表中桶的数量,初始容量是创建哈希表时的容 量,加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度,它衡量的是一个散列表的空间的使用程度,负载因子越大表示散列表的装填程度越高,反之 愈小。对于使用链表法的散列表来说,查找一个元素的平均时间是O(1+a),因此如果负载因子越大,对空间的利用更充分,然而后果是查找效率的降低;如果 负载因子太小,那么散列表的数据将过于稀疏,对空间造成严重浪费。系统默认负载因子为0.75,一般情况下我们是无需修改的。
40、js立即执行函数 ( function(){…} )(),( function (){…} () )
41、网站的优化(动态与静态)42、set的底层结构
&& &Set继承自Collection接口。Set是一种不能包含有重复元素的集合,即对于满足e1.equals(e2)条件的e1与e2对象元素,不能 同时存在于同一个Set集合里,换句话说,Set集合里任意两个元素e1和e2都满足e1.equals(e2)==false条件,Set最多有一个 null元素。
&& & 因为Set的这个制约,在使用Set集合的时候,应该注意:
&& &1,为Set集合里的元素的实现类实现一个有效的equals(Object)方法。
&& &2,对Set的构造函数,传入的Collection参数不能包含重复的元素。
&& &请注意:必须小心操作可变对象(Mutable Object)。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。
&&& 此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证集合的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
&&& HashSet不是同步的,需要用以下语句来进行S同步转换:
&&&&&&&&&& &Set s = Collections.synchronizedSet(new HashSet(...));
43、序列化的几种方式44、spring最重要的组件是什么45、beanFactory有什么用,与applicationContext有什么区别
1. BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。
&2. ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能:
& a. 国际化支持&b. 资源访问:Resource rs = ctx. getResource(“classpath:config.properties”), “file:c:/config.properties”&c. 事件传递:通过实现ApplicationContextAware接口
1,Spring的IoC容器就是一个实现了BeanFactory接口的可实例化类。
事实上,Spring提供了两种不同的容器:一种是最基本的BeanFactory,另一种是扩展的ApplicationContext。
BeanFactory 仅提供了最基本的依赖注入支持,而 ApplicationContext 则扩展了BeanFactory ,提供了更多的额外功能。
2.ApplicationContext的初始化时间会比BeanFactory稍长一些
BeanFactory在初始化容器时,并未实例化Bean,直到第一次访问某个Bean时才实例目标B
而ApplicationContext则在初始化应用上下文时就实例化所有的单实例的Bean。
46、js立即执行函数
47、js中如何将字符串转json
1,js自带的eval函数,其中需要添加小括号eval('('+str+')');
function strToJson(str){ var json = eval('(' + str + ')');
2,new Function形式
function strToJson(str){ var json = (new Function("return " + str))();
3,全局的JSON对象
function strToJson(str){ return JSON.parse(str); }
使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下
&代码如下:
var str = '{name:"jack"}'; var obj = JSON.parse(str); // --& parse error
name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。
48、hashcode理解
1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
2、如果两个对象相同,就是适用于equals(.lang.Object) 方法,那么这两个对象的hashCode一定要相同;
3、如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;
4、两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。
49、synchronized与Lock区别、
1,Lock的锁定是通过代码实现的,而 synchronized 是在 JVM 层面上实现的
2,synchronized在锁定时如果方法块抛出异常,JVM 会自动将锁释放掉。但是 Lock 出现异常时必须在 finally 将锁释放掉,否则将会引起死锁
3,ReentrantLock提供了多样化的同步,比如有时间限制的同步,可以被Interrupt的同步(synchronized的同步是不能Interrupt的)
4,在资源竞争不激烈的情形下,synchronize更合适,当同步非常激烈的时候,lock更合适
阅读(...) 评论()1393人阅读
java(41)
public class Test {
Person person = new Person(&Test&);
System.out.println(&test static&);
public Test() {
System.out.println(&test constructor&);
public static void main(String[] args) {
new MyClass();
class Person{
System.out.println(&person static&);
public Person(String str) {
System.out.println(&person &+str);
class MyClass extends Test {
Person person = new Person(&MyClass&);
System.out.println(&myclass static&);
public MyClass() {
System.out.println(&myclass constructor&);
test static
myclass static
person static
person Test
test constructor
person MyClass
myclass constructor
首先加载Test类,因此会执行Test类中的static块。接着执行new MyClass(),而MyClass类还没有被加载,因此需要加载MyClass类。在加载MyClass类的时候,发现MyClass类继承自Test类,但是由于Test类已经被加载了,所以只需要加载MyClass类,那么就会执行MyClass类的中的static块。在加载完之后,就通过构造器来生成对象。而在生成对象的时候,必须先初始化父类的成员变量,因此会执行Test中的Person
person = new Person(),而Person类还没有被加载过,因此会先加载Person类并执行Person类中的static块,接着执行父类的构造器,完成了父类的初始化,然后就来初始化自身了,因此会接着执行MyClass中的Person person = new Person(),最后执行MyClass的构造器。
作用:方便在没有创建对象的情况下进行调用方法或变量;静态代码块以用来优化代码性能,只会在类加载的时候执行一次
静态方法中不能访问非静态成员变量和方法,因为没有this
非静态方法可以访问静态成员变量和方法
类的构造器实际上也是静态方法.
static 不允许用来修饰局部变量
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:106461次
积分:2393
积分:2393
排名:第16469名
原创:130篇
转载:48篇
(4)(1)(5)(2)(3)(3)(4)(4)(4)(5)(1)(9)(7)(8)(11)(3)(5)(11)(9)(18)(26)(11)(24)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'c语言面试题:关键字static,const,volatile的用法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
c语言面试题:关键字static,const,volatile的用法
&&c语言面试题:关键字static,const,volatile的用法
你可能喜欢

我要回帖

更多关于 c static的作用 的文章

 

随机推荐