---------------------------corejava----------------------------------------
1.列出8种基本数据类型和其对应的包装类。(1分)
答:
(1)整型 byte short、int、float、long、double
(2)字符型 char
(3)布尔类型 boolean
对应包装类:Byte Short Integer Float Long Double Character Boolean
2.定义一个Worker类,
1)属性:name,age,salary
2)方法:Worker另外实现2个构造方法(有参和无参)(1分)
3)完成属性的封装,提供get/set方法。(1分)
4)覆盖toString方法(1分)
5)equals方法(1分)
Class Worker{
private String name;
private Integer age;
private Double salary;
public Worker(){}
public Worker(String name,Integer age,Double salary){
this.name=name;
this.age=age;
this.salary=salary;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setAge(Integer age){
this.age=age;
}
public Integer getAge(){
return age;
}
public void setSalary(Double salary){
this.salary=salary;
}
public Double getSalary(){
return salary;
}
public String toString(){
return “name=”+name+”age=”+age+”salary=”+salary;
}
public Boolean equals(Object obj){
if(this==obj){return true;}
if(obj==null){return false;}
if(this.getClass()!=obj.getClass()){return false;}
Worker w=(Worker)obj;
if(this.name.equals(w.name)&&this.age.equals(w.age)&&this.salary.equals(w.salary)){return true;}
else return false;
}
}
3.内部类有几种?分别叫什么?(1分)
答:成员内部类、局部内部类、静态内部类、匿名内部类
4.简述Java中四个访问修饰符 以及各自的特点(1分)
答:private 限制只能访问本类的方法、属性 不能修饰类
Default 限制只能访问本类或者同包的类的方法、属性 可以修饰类
protected 限制只能访问本类、同包的类或者不同包的子类 不能修饰类
public 没有访问限制 可以修饰类
5.简述方法覆盖和方法重载的区别(1分)
答:
(1)方法覆盖(Override):访问修饰符 返回值类型 方法名(参数列表)
要求,访问修饰符和父类一样或者范围更广、返回值类型、方法名必须和父类一致
(2)方法重载(Overload):访问修饰符 方法名(参数列表)
要求,方法名相同,参数列表必须不同
6.写出String常用的方法(3个)(1分)
答:
(1)str.charAt(i):返回str中指定下标i处的值
(2)str.indexOf(ch):返回指定ch在str中第一次出现的下标值
(3)length: 返回字符串的长度
(4)spilt(‘\’): 按括号内指定的内容(如\)拆分字符串
(5)str.hashCode():返回字符串str的哈希码
------------------------Oracle和JDBC第一阶段----------------------------
【1】.封装Account对象,属性为:id(Integer)、name(String)、password(String)、balance(double),
get/set方法可省略
(1)创建5个Account对象,存放入Map中,Map<Integer,Account>(键为id,值为Account对象)
(2)将Map中所有Account计算平均余额(balance)
class Account {
private Integer id;
private String name;
private String password;
Private Double balance;
//get/set方法
//toString方法
}
public class T1{
public void static main(String[]args){
Account a1=new Account(1,”Tom”,”123”,12.1);
Account a2=new Account(2,”Jim”,”123”,22.1);
Account a3=new Account(3,”Aim”,”123”,33.1);
Account a4=new Account(4,”Jony”,”123”,44.1);
Account a5=new Account(5,”Ms”,”123”,55.1);
Map<Integer,Account> map=new HashMap<Integer,Account>();
map.put(a1.getId(),a1);
map.put(a2.getId(),a2);
map.put(a3.getId(),a3);
map.put(a4.getId(),a4);
map.put(a5.getId(),a5);
double sum=0;
//Set<Account> set=map.keySet();得到键
Set<Account> set=map.values();//得到值
For(Account a:set){
Sum+=a.getBalance();
}
Syso(sum/(map.size()));
}
}
2.建表:
(1)课程表:table_class
列名 数据类型 位数 键 Not null/unique
id number 6 pk
name Varchar2 20 nn
create table_class(
id number(6) primary key ,
name Varchar2(20)
)
(2)学生表:table_stu
列名 数据类型 位数 键 Not null/unique 检查约束
id number 6 pk
name Varchar2 20 nn
zip number 6 必须6位
address Varchar2 50
class_id number 6 FK(指向table_class的pk)
create table_stu(
id number(6) primary key,
name Varchar2(20),
zip number(6) check(zip.length==6),
address Varchar2(50),
class_id number(6) references table_class(id)
)
(3)为两个表分别插入一条数据
Insert into table_class values(22,”Tom”);
Insert into table_stu values(23,”lisi”,12,22);
3.简述JDBC六个步奏。
答:
加载驱动
创建数据库连接
创建发送Sql语句的工具
执行SQL语句
处理结果集
释放资源
-------------------HTML----------------------
1.from标签的作用:有哪些属性,每个属性的作用;
答:action:数据提交的目标位置
method:提交数据的方式
2.post和get提交方式有什么不同;
答:post提交方式安全且数据容量大
Get提交方式不安全且数据量小
3.请用HTML实现如下图所示的申请表表单(只写body部分):
申请表
姓名:
密码:
提交
要求:将数据提交给 action="http://xxxx:xx/xxxx/xx" 资源;
答:
<html>
<head>
<title></title>
</head>
<body>
<form action=”http://localhost:8989/xxx”method=”post”>
<p>申请表</p>
姓名:<input type=’text’value=’请输入姓名’>
密码:<input type=’password’value=’请输入密码’>
<input type=’submit’value=’确认提交’>
<input type=’reset’ value=’重新输入’>
</form>
</body>
</html>
4.已知已创建如下表格并插入了多条数据:
create table t_bank(
id number(7) primary key,
name varchar2(34) ,
password varchar2(35),
balance number(10,2)
);
完成如下代码(工具类JdbcUtil、实体类Person;只需要完成dao):
(1)查询所有数据;
public List<Person> queryAllPerson()throws Exception{
Connection conn=null;
}
(2)修改一条数据。
public void updateOnePerson(Person person)throws Exception{
......
}
---------------------oracle and JDBC-------------------------------
已知已创建如下表格并插入了多条数据(表中序列名为:t_bank_seq):
create table t_bank(
id number(7) primary key,
name varchar2(34) ,
password varchar2(35),
balance number(10,2)
);
根据如下代码实现对应的功能(工具类JDBCUtil和实体类Bank已给出;完成dao层、service层):
public class BankTest{
public static void main(String[] rabs){
//测试
}
//查看账户
public void showBank(){
Scanner sc = new Scanner(System.in);
Integer id = sc.nextInt();
BankService service = new BankService();
Bank bank = service.getBankById(id);
System.out.println(bank);
}
//开户
public void openBank(){
Scanner sc = new Scanner(System.in);
String name = sc.next();
String password = sc.next();
Double balance = sc.nextDouble();
Bank bank = new Bank(null,name,password,balance);
//调用service
BankService service = new BankService();
service.addBank(bank);
}
}
=========================================
public class BankService{
public Bank queryBankById(Integer id){
//实现....
}
public void addBank(Bank bank){
//实现....
}
}
public class BankDAO{
public Bank selectBankById(Integer id){
//实现...
}
public void insertBank(Bank bank){
//实现...
}
}
---------------------JDBC阶段测试------------------
1.封装Account对象,属性为:id(Integer)、name(String)、password(String)、balance(double),
get/set方法可省略
(1)创建5个Account对象,存放入Map中,Map<Integer,Account>(键为id,值为Account对象)
(2)将Map中所有Account计算平均余额(balance)
2.建表:
(1)课程表:table_class
列名 数据类型 位数 键 Not null/unique
id number 6 pk
name Varchar2 20 nn
(2)学生表:table_stu
列名 数据类型 位数 键 Not null/unique 检查约束
id number 6 pk
name Varchar2 20 nn
zip number 6 必须6位
address Varchar2 50
class_id number 6 FK(指向table_class的pk)
注:refereces table_class(id)
(3)为两个表分别插入一条数据
insert into table_class values(?,?);
3.简述JDBC六个步奏。
------------------------Oracle数据库-------------------
1.已知有一个Worker类如下:
public class Worker{
private int age;
private String name;
private double salary;
public Worker(){}
public Worker(int age, String name, double salary) {
super();
this.age = age;
this.name = name;
this.salary = salary;
}
//省落get()/set()方法
}
完成下面的要求:
(1)创建一个List,在List中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
(2)遍历集合,打印List中所有工人的信息。
2.已知一学校的教学课程内容安排如下:
老师 课程
Tom CoreJava
John Oracle
Susan JDBC
完成下列要求:
(1)使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述课程安排;
(2)遍历Map,输出所有的老师及老师教授的课程。
3.查询first_name 中包含"na"的员工信息;
4.显示各种部门的最低工资
5.把hiredate列看做是员工的生日,求本月过生日的员工
------------------------------Servlet--------------------------------------
1.根据自己的理解,简述forward和sendRedirect。
答:(1)forward,带参数跳转,会改变地址,一次请求,共享request作用域
RequestDispatcher rdp=request.RequestDispatcher(“url”);
rdp.forwoard(request,response);
(2)sendRedirect,不带参数跳转,会改变地址,多次请求,不共享作用域
response.sendRedirect(“uri”);
(3)include:不会改变地址
RequestDispatcher rdp=request.RequestDispatcher(“url”);
rdp.include(request,response);
2.简述servlet的生命周期。
答:init(),servlet执行初始化时执行的方法
service():servlet提供服务时所执行的方法
destroy():servlet对象销毁时所执行的方法
3.根据下面要求完成通讯录的登陆验证功能:
(1)工具类:JdbcUtil,entity:User,dao、service层已给出
(service方法:public User queryByName(String name,String password){...}),
只需完成action(com.zpark.LoginAction);
(2)登陆界面信息:
<body>
<form action="/telbook_web/loginAction" method="post">
<table border="1" bordercolor="blue" cellspacing="0" align="center">
<tr>
<td>请输入姓名:</td>
<td><input type="text" name="username"/></td>
</tr>
<tr>
<td>请输入密码:</td>
<td><input type="password" name="password"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="login"/></td>
</tr>
</table>
</form>
</body>
(3)登陆成功跳转到html/success.html页面,否则跳转到/ErrorView(com.zpark.ErrorView),并将登陆信息回显给客户端;
(4)写出登陆配置文件web.xml(只需写出LoginAction的配置信息即可)。
一、提问问题
1、 param pageScope requestScope sessionScope
applicationScope cookie pageContext
2、静态include:在输出结果前把源代码合在一起,再输出结果
动态include:在输出结果时,把源代码编译合在一起,输出结果!
3、 pageContext可以获得其他8个隐含对象
pageContext.getRequest(); --request
pageContext.getSession(); --session
pageContext.getServletContext();--application
4、获得作用域中的值
${pageScope.命名属性名}--------<%=pageContext.getAttribute("命名属性名")%>
${requestScope.命名属性名}------<%=request.getAttribute("命名属性")%>
${sessionScope.命名属性名}------<%=session.getAttribute("命名属性")%>
${applicationScope.命名属性名}-----<%=application.getAttribute("命名属性")%>
【注意】不存在这种写法:
${session.命名属性名}-
${application.命名属性名}
${page.命名属性名}
${request.命名属性名}
1.写出JSP中九个隐含对象。(2分)
答:pageContext request session application config out exception response
page
2.在servlet中往作用域里存值,代码如下: (2分)
session.setAttribute("name","zhangsan");
request.setAttribute("name" ,"lisi");
如果从jsp页面中用如下代码取值,写出取值结果:
${name} ----------------->从最小的作用域取到最大的 "lisi" "zhangsan"
${requestScope.name} "lisi" ----->"zhangsan"
${sessionScope.name}"zhangsan"----->"lisi"
3.根据java代码写出对应的EL表达式 (3分)
(1)<%=request.getParameter("age")%> ${param.age}
(2)<%=pageContext.findAttribute("age")%> ${age}
(3)打印stu对象的age属性值: <%= stu.getAge() %> ${stu.age}
(4)<%=request.getContextPath()%> ${pageContext.request.contextPath}
(5)<%=session.getId() %> ${pageContext.sesion.id}
(6)<%Cookie[] cookies = request.getCookies();
if (cookies != null){
for(Cookie c : cookies){
if (c.getName().equals("JSESSIONID")){
c.getValue();
}
}
};
%>
${cookie.JSESSIONID.value}
4. 描述session和cookie的关系。(2分)
答:cookie是session的底层实现,在会话过程中,服务器创建session对象,把JSESSION存放至浏览器端cookie中,当客户端访问服务器时带JSESSIONID去访问session对象.
备注:每个session对象都有一个编号:JSESSIONID。当浏览器第一次访问服务器(request.getSession(true)),创建session,并且将session的编号,通过cookie随着响应写入浏览器;
5.分别简述forward和sendRedirect在使用时如何编写,叙述各自的特点并分析二者的区别。(2分)
(1)forward
RequestDispatcher rdp=request.getRequestDispatcher("URL");
rdp.forward(request,response);
特点:带参数跳转,共享作用域,一次请求,跳转后地址栏不改变
(2)sendRedirect重定向
response.sendRedirect("URI");
特点:不带参数跳转,不共享作用域,多次请求,跳转后地址栏改变
6.简述Servlet的生命周期。(2分)
答:
(1)init():servlet开始执行初始化
(2)service():servlet提供服务时创建的方法
(3)destroy():servlet进行销毁时所提供的方法
--------------hibernate----------
1. 简述hibernate采取了哪些措施来减少java与数据库之间的交互次数(abcd)
a. 缓存(一级、二级)
b. 懒加载:延迟加载
c. hql 批处理
d. 事务提交时,批量执行增删改语句
2. HQL与SQL的说法哪些是正确的:(bcd)
a. HQL与SQL没有差别
b. HQL面向对象,而SQL面向关系型数据库
c. HQL与SQL都包含select, insert, update, delete 语句
d. HQL仅用于查询数据,不支持insert, update, delete语句
3. 下面哪些方法不属于org.hibernate.Session:(aef)
a. find b. load c. save
d. delete e. upload f. open
g. close h. evict(移除session中的一个对象) i. clear j. flush
4. 有如下实体类和映射文件
public class Employee{
...
private Department department;
}
public class Department {
...
private Set<Employee> employees = new HashSet<Employee>();
}
...
<many-to-one name="department" column="department_id" >
...
<set name="employees" inverse="true">
<key column="department_id"/>
<one-to-many class="Employee"/>
</set>
执行查询(假设有一条部门记录id=1存在,并有3条员工记录) 问:
Session session = ...
Department d = (Department)session.load(Department.class, 1);(不会立即到数据库查询) //1
session.close(); //2
System.out.println(d.getName()); //3
System.out.println(d.getEmployees().size()); //4
下面哪种说法正确:c
a. 会正常打印部门名称,以及员工人数
b. 程序运行到2处出现异常
c. 程序运行到3处出现异常
d. 程序运行到4处出现异常
5. 实体类、映射文件和数据库数据同上题
执行:
Session session = ...
Department d = session.load(Department.class, 1);(不会立即执行) //1
System.out.println(d.getName()); (会打印部门名称,因为不会用到关系属性) //2
session.close(); //3
System.out.println(d.getEmployees().size()); (用到关系属性) //4
下面哪种说法正确:(d)
a. 会正常打印部门名称,以及员工人数
b. 程序运行到2处出现异常
c. 程序运行到3处出现异常
d. 程序运行到4处出现异常
6. 实体类、映射文件和数据库数据同上题
执行:
Session session = ...
List<Department> d = session.createQuery(
"from Department d inner join fetch //(fetch是将自身和关系表的属性同时查询出来)
d.employees where d.id=1").list(); //1
System.out.println(d.get(0).getName()); //2
session.close(); //3
System.out.println(d.get(0).getEmployees().size()); //4
下面哪种说法正确:(a)
a. 会正常打印部门名称,以及员工人数
b. 程序运行到2处出现异常
c. 程序运行到3处出现异常
d. 程序运行到4处出现异常
7. 对于hibernate中的一级缓存,二级缓存,说法错误的是?(c)
a.二级缓存能够提高查询效率
b.二级缓存可以被多个Session所共享
c.一级缓存需要单独配置
d.一级缓存属于Session级别,session关闭,一级缓存中内容也会被清空
8. 实体类、映射文件和数据库数据同第4题
假设数据库中已有记录Department(id=1),下面哪种说法正确?
a. 执行(错误)
session.get(Department.class, 1);
session.get(Department.class, 1);
会导致查询2次数据库
b. 执行(错误)
session.load(Department.class, 1);//未发送sql语句
session.load(Department.class, 1);//未发送sql语句
会导致查询2次数据库//1次
c. 执行(错误)
session.createQuery("from Department where id=1").uniqueResult();//进入session缓存
session.get(Department.class, 1);//进入session寻找,如果没有,那么进入数据库查询
会导致查询2次数据库//1次
d. 执行(错误)
session.createQuery("from Department where id=1").uniqueResult();
session.load(Department.class, 1);
会导致查询2次数据库//1次
e. 执行(正确)
session.get(Department.class, 1);
session.createQuery("from Department where id=1").uniqueResult();
会导致查询2次数据库
------------jquery和ajax--------
1.请说出至少五个以上的选择器
*ID选择器:$("#ID值")
var a=$("#con");//选取出id为con的标签
*元素选择器:$("标签名")
var a=$("div");//选取出div标签
*类选择器:$(".样式类名")
*层级选择器
*jquery对于多选择器共存时的解析规则:从左到右依次解析
*后代选择器:$("selectorA selectorB ....")
*父子选择器:$("selectorA>selectorB>.....")
*紧邻的后续兄弟选择器:$("selectorA+selectorB+.....")
*所有后续兄弟选择器:$("selectorA~selectorB~.....")
2.DOM对象和Jquery对象之间的相互转化,有什么区别?
答:document.getElementById(id) ---- dom对象 不可以调用jquery相关方法.
$(“#id”) ---- jquery对象才可以调用jquery相关的方法 text() css()
3.什么是异步请求?异步请求有哪些好处?
Ansynchronized JavaScript And XML (异步 javacript 和 xml)
异步:在不同的执行线上
异步请求:浏览器在展示当前页面的同时,在后台偷偷的发起的请求,进行数据库内容修改
如此的请求不会阻塞当前页面的展示。
4.书写jquery对ajax封装后,使用ajax发送post请求的代码?
$.ajax({
type:"post",
url:
data:
success:function(result){
//
}
,dataType:"JSON"
});
var re=22;
var pp=4349;
$.ajax({
type:"post",
url:"${pageContext.request.contextPath}/xxxx",
data:"name="+re&"password="+pp,
success:function(ret){
}
,dataType:"JSON"
});
5.请写出发送ajax时,后台返回的是一个list集合时,后台转化list集合的关键代码?
GsonBuilder gb=new GsonBuilder();时
Gson gson=db.create();
String str=gson.toJson(*****);
public class Test{
public static void main(String[]args){
Gson gson=new Gson();
String str=gson.toJson();
//常用的方法response需要从HttpServletContext中获得
response.EncodingType("utf-8");
GsonBuilder gb=new GsonBuilder();
Gson gson2=db.settoDateFormat("yyyy-MM-dd").create();
gb.setExclusionStrategies(new ExclusionStrategy);
gson.toJson(list);
}
}
6.在jquery中,要想在DOM中清空所有匹配的元素,下面选项正确的是?( c.empty() 或a.remove())
<div id="d">
<div>hello</div>
</div>
a.remove():即移除元素的同时会把该元素所在的标签和事件同时移除
b.removeAll();//不存在
c.empty();只清除匹配的元素,而不清除标签
d.delete();//不存在
---------------------struts2-----------------
1、struts2的核心控制器
<filter>
<filter-name>c35</filter-name>
<filter-class>org.apache.struts2.dispacther.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>c35</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2、jsp向action传生日值
<form action="^^^^^?name=***&age=***&birthday=yyyy-MM-dd"/>
3、业务逻辑由DAO和Service处理完成