面的职位是java开发工程师,一面二面是一起的~其实很简单的,哎,但是只怪自己没有准备充分。
1.自我介绍
2.聊项目,json数组怎么解析后台传回来的?
没有解析json格式,当时处理的方式是座位
3.hibernate框架与jdbc的区别?
相同点:
◆两者都是JAVA的数据库操作中间件。
◆两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭。
◆两者都可以对数据库的更新操作进行显式的事务处理。
不同点:
◆使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query language)语言
◆操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据库中。
◆数据状态不同:JDBC操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致,而Hibernate操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。
答:当时只回答了方便使用
Hibernate是JDBC的轻量级的对象封装,Hibernate可以用在任何JDBC可以使用的场合。
4.有用过哪些中间件?
答:当时真的不知道中间件是什么.....后台提示了一下说是tomcat等之类的容器。
4.sql的分页是怎么实现的?
答:利用数据库本身实现分页,在此仅讨论MYSQL
数据库,在MYSQL
数据库中有一个LIMIT
关键字
当使用两个参数时,第一个参数表示
offset
起始位置,第二个参数表示返回的最大行数the maximum number of rows to return
,其中offset
的初始值是0
(not 1
)
-- 检索第6-15条数据
SELECT * FROM tbl LIMIT 5,10;
当使用一个参数时,该参数表示返回的最大行数(With one argument, the value specifies ·
the number of rows
to return from the beginning of the result set)
-- 从默认起始位置(0)开始返回5前条数据
SELECT * FROM tbl LIMIT 5;
MYSQL
中关键字LIMIT
的用法之后,分页便是很简单的事情了,在程序中,用两个参数表示LIMIT
的offset
和rows
,每次请求时传递当前页面的值和每页的数据量便可。
4.知道什么集合类?
答:知道,ArrayList,LinkedList,HashMap,HashTable,vector,Hashset,TreeSet.
5.ArrayList和LinkedList的区别?
答:它们的底层实现是不一样的,ArrayList的底层实现是一个数组,这种方式将对象放在连续的位置中,它的容量是动态可变的,它的初始容量是10,当它超过初始数组的时候会扩容,就变成初始容量的1.5倍。因为底层是数组实现的,它的优点是查找方便,但是插入和删除效率不高,因为会移动大量的数组(其实底层有用到本地的数组复制方法,把旧数组复制到新数组上。
LinkedList的底层实现是双向链表,它的优点是插入和删除比较方便,查找效率不高。LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始
6.写一下sql语句,(求出省份总人口超过2000万人的省份名称)
答:select name from table group by name having sum(people)>2000万
7.学习途径是什么?
答:说了比较喜欢看书,最近在看深入了解java虚拟机。
7.问了一下java的内存管理,了解它对项目中的有什么用?
答:可以通过查看内存分配情况来找到出错的原因。
7.想一道编程题
答:一个已经排好序的1.。。1000个数,从中取出一个 数,请问怎么在只有999个数的数组中找到哪个数的缺失?
答:没答出来,只想到了暴力搜索,实际上利用二分搜索(利用s[i]和i的关系)就可以的,估计面试官觉得我不懂变通吧。