面试题4

来源:互联网 发布:广东中标数据科技 编辑:程序博客网 时间:2024/06/05 18:20

上午面试题
1.数据结构

链表有很多种不同的类型:单向链表,双向链表以及循环链表。1、常见数据结构线性:数组,链表,队列,堆栈,块状数组(数组+链表),hash表,双端队列,位图(bitmap)树:堆(大顶堆、小顶堆),trie树(字母树or字典树),后缀树,后缀树组,二叉排序/查找树,B+/B-,AVL树,Treap,红黑树,splay树,线段树,树状数组图:图其它:并查集2、常见算法(1)       基本思想:枚举,递归,分治,模拟,贪心,动态规划,剪枝,回溯(2)       图算法:深度优先遍历与广度优先遍历, 最短路径,最小生成树,拓扑排序(3)       字符串算法:字符串查找,hash算法,KMP算法(4)       排序算法:冒泡,插入,选择,快排,归并排序,堆排序,桶排序(5)       动态规划:背包问题,最长公共子序列,最优二分检索树(6)       数论问题:素数问题,整数问题,进制转换,同余模运算,(7)       排列组合:排列和组合算法(8)       其它:LCA与RMQ问题

堆栈问题
object obj=new Object();

obj存放在堆内存里面,只存放对象本身 object存放到栈里面,基本数据和对象的引用

下午面试题
1.数据库删除重复的记录

用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete from people where   peopleName in (    select peopleName    from people     having count(peopleName) > 1) and   peopleId not in (    select min(peopleId) from people     having count(peopleName)>1) 3、查找表中多余的重复记录(多个字段) select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)   6.消除一个字段的左边的第一位:update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'7.消除一个字段的右边的第一位:update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录 update vitae set ispass=-1where peopleId in (select peopleId from vitae group by peopleId

2.session和cache

1)最大的区别是Cache提供缓存依赖来更新数据,  而Session只能依靠定义的缓存时间来判断缓存数据是否有效。(2)只要Cache.Add方法中定义的缓存时间未过期,下次开启应用程序时,缓存的数据依然存在。而Session缓存只是存在于一次会话中,会话结束后,数据也就失效了。(3)Session容易丢失,导致数据的不确定性,而Cache不会出现这种情况。(4)由于Session是每次会话就被加载,所以不适宜存放大量信息,否则会导致服务器的性能降低。而Cache则主要用来保存大容量信息,如数据库中的多个表。Session是由应用服务器维持的一个服务器端的存储空间Cookie是客户端的存储空间,由浏览器来维持。CACHE ,则是服务器端的缓存,是所有用户都可以访问和共享的。

3.session的存储位置,格式

Tomcat 中的 Session 是放在org.apache.catalina.session.ManagerBase 类中,以 HashMap 格式存放,key 为 sessionId, value 为 org.apache.catalina.Session 接口,他有三种存储方式(自定义存储在这里不做讨论):  1.1保存在IIS进程中:  1.2.保存在StateServer上  1.3.保存在SQL Server数据库中    这种方式在服务器挂掉重启后都还在,因为他存储在内存和磁盘中。

4.servlet的生命周期

对每一个客户端的请求,Servlet引擎载入Servlet,调用它的init()方法,完成Servlet的初始化。Servlet对象通过为每一个请求单独调用service()方法来处理所有随后来自客户端的请求调用Servlet的destroy()方法把Servlet删除掉。

5.IOC的实现原理

1.创建xml配置文件,配置要创建的对象2.创建工厂类,使用dom4j来解析配置文件3.使用反射创建类对象
0 0
原创粉丝点击