新浪信息完整系统java开发工程师测试题.docx
《新浪信息完整系统java开发工程师测试题.docx》由会员分享,可在线阅读,更多相关《新浪信息完整系统java开发工程师测试题.docx(7页珍藏版)》请在冰豆网上搜索。
新浪信息完整系统java开发工程师测试题
请先阅读
欢迎并感谢您参加此次面试,有几点事项请您注意一下:
1.开始答题前请在按照下面表格要求填写一下您的个人信息。
姓名
性别
年龄
工作年限
毕业院校和专业
手机
EMail
2.本试题包括Java开发、Web开发、数据库开发和非技术题目4个部分(共7页),满分100(非技术题目不计分),请在120分钟内完成。
矚慫润厲钐瘗睞枥庑赖。
3.答题完毕后请把您的简历放到试题后一同交给我们的同事。
4.答题为闭卷考试,如有任何疑问,请答题前提出,答题开始后请勿咨询任何人员。
5.试题请勿带出新浪公司。
6.答题完毕后,如果合适,我们会在3天内通知您进一步面谈,限于人力,不合适就不再另行通知,非常感谢您的理解。
聞創沟燴鐺險爱氇谴净。
祝您取得好成绩。
一、java基础
1.请简要叙述下public、protected、friendly、private的访问限制。
(5分)残骛楼諍锩瀨濟溆塹籟。
public在任何地方都可以访问。
Protected在同包下和不同包子类可以访问。
Friendly在同包下可以访问,private在同一个类中可以访问。
酽锕极額閉镇桧猪訣锥。
2.请参考如下代码,回答后列问题.
packagecom.sina.app;
publicclassOrderCreator{
publicstaticOrdercreateOrder(StringorderType)throwsException{
Orderorder=null;
if("sales".equals(orderType)){
order=newSalesOrder();
}elseif("channel".equals(orderType)){
order=newChannelOrder();
}else{
thrownewException("nosuitableordertype");
}
returnorder;
}
publicstaticvoidmain(String[]args){
Orderorder=null;
try{
order=OrderCreator.createOrder("sales");//<--第20行
System.out.println(order.getDiscount());
}catch(Exceptione){
System.out.println(e.getMessage());
}finally{
System.out.println("created"+(order==null?
"0":
"1")+"order");
}
}
}
classOrder{
privatedoublediscount;
publicOrder(){
System.out.println("anOrderwillbecreated.");
}
publicdoublegetDiscount(){
returndiscount;
}
}
classChannelOrderextendsOrder{
publicChannelOrder(){
System.out.println("aChannelOrderwillbecreated.");
super.discount=0.75d;
}
}
classSalesOrderextendsOrder{
publicSalesOrder(){
System.out.println("aSalesOrderwillbecreated.");
super.discount=0.90d;
}
}
1)上面代码能否通过编译并运行,如果能请写出运行结果,如果不能请改正并写出运行结果。
(5分)
0.9d
Creatd1order
created1order
2)如将上面代码第20行处改为order=OrderCreator.createOrder("agent");请写出运行结果。
(5分)彈贸摄尔霁毙攬砖卤庑。
Null;
Creatd0order
3)请用uml画出上面代码的类结构图。
(10分)
4)按设计模式的观点,这个应该是属于什么模式,试举几个其他模式的名字。
(5分)
单利
恶汉
二、web开发
1.请简述jsp中forword和sendRedirect的区别。
(5分)
sendRedirect重定向将地址栏不改变
forword转发
转发是服务器行为,重定向是客户端行为;
二转发是一次请求
重定向,其实是两次request请求
2.请写出如下代码的执行结果:
(5分)
functionOrder(args){
this.n3=args.a;
this.n2=args.b;
this.n1=args.c;
this.say=function(){
returnthis.n1;
}
}
alert(newOrder({"a":
"n1","b":
"n2","c":
"n3"}).say());
3.请简要画出mvc模式的流程图。
(10分)
三、数据库开发
数据库中有一个表名为“SalesOrder”的表,结构和数据如下:
orderID(PK,合同ID)
region(地区)
sales(销售人员)
total(合同金额)
1
A
张三
1,000,000
2
A
李四
500,000
3
C
赵五
2,000,000
4
A
张三
1,500,000
5
C
赵五
1,500,000
6
A
张三
500,000
7
B
王六
1,000,000
8
B
钱七
800,000
9
B
王六
900,000
请你按照下面要求写出sql语句:
1.统计出每个地区的合同金额合计并按此倒序排列显示。
(5分)
selectregion,sum(total)fromsalesOrdergroupbyregion謀荞抟箧飆鐸怼类蒋薔。
orderbysum(total)desc;
2.统计出每个地区的销售人员数量。
(10分)
Selectregion,count(*)销售人员个数fromsalesOrdergroupbyregion;厦礴恳蹒骈時盡继價骚。
3.统计出每个地区合同金额最少的销售人员。
(10分)
select*fromsalesOrders,(selectregion,min(total)mfromsalesOrdergroupbyregion)t茕桢广鳓鯡选块网羈泪。
wheres.region=t.regionands.total=t.m;
4.统计出所有超过本地区合同金额平均值的合同及金额。
(10分)
select*fromsalesOrders,(selectregion,avg(total)mfromsalesOrdergroupbyregion)t鹅娅尽損鹌惨歷茏鴛賴。
wheres.region=t.regionands.total>t.m;
5.现在为了报表统计方便,需要把上表中每个地区的合计金额放入一张名为“salesReport”的表中,格式如下:
籟丛妈羥为贍偾蛏练淨。
region(地区)
total(合同金额合计)
A
3,500,000
…
…
请写出相应操作语句。
(10分)
CreatetablesalesReportasselectregion,sum(total)total(合同金额合计)fromsalesOrdergroupbyregion;預頌圣鉉儐歲龈讶骅籴。
6.就上面的数据,如果建立索引,需要在哪些列上面建,建什么样的索引,为什么。
(5分)
可以把region设置为主键,因为此列的值不能为空且唯一。
四、非技术题目(本部分不计分)
你对新技术的学习和应用有非常大的热情,可是你发现公司里正在运行的系统好多都是几年前写的(当然也是几年前的技术),而你大部分的时候必须去继续开发和维护这些系统,你如何看待并处理两者之间的矛盾。
渗釤呛俨匀谔鱉调硯錦。