上海交通银行笔试题及答案.docx
- 文档编号:14700549
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:13
- 大小:50.02KB
上海交通银行笔试题及答案.docx
《上海交通银行笔试题及答案.docx》由会员分享,可在线阅读,更多相关《上海交通银行笔试题及答案.docx(13页珍藏版)》请在冰点文库上搜索。
上海交通银行笔试题及答案
选择题:
1.下面两段代码,输出为()
publicclassA{
{
System.out.println("A");
}
static{
System.out.println("B");
}
A(){
System.out.println("C");
}
}
publicclassBextendsA{
{
System.out.println("D");
}
static{
System.out.println("E");
}
B(){
System.out.println("F");
}
publicstaticvoidmain(String[]args){
Bb=newB();
System.out.println("G");
}
2.
3.
4.transient变量,在以下那几个类中使用?
(serialization)
参考答案:
serialization
选择题知识点:
J2EE;EJB;JPA;SSH;IBatis;AIX;WAS;Statement;数据库日志满;CPU瓶颈;泳道图;静态类;事物;spring;游标稳定性;MVC;设计模式
编程题
1.编写一个人民币金额数字转换成大写的函数,无小数,最大999999999。
例如:
12304转为壹万两仟三佰零四元整
40000转为4万元整
参考答案:
publicclassNum2Rmb{
privateString[]hanArr={"零","壹","贰","叁","肆","伍",
"陆","柒","捌","玖"};
privateString[]unitArr={"拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟"};
privateStringtoHanStr(StringnumStr)
{
Stringresult="";
intnumLen=numStr.length();
for(inti=0;i { intnum=numStr.charAt(i)-48; if(i! =numLen-1&&num! =0) { result+=hanArr[num]+unitArr[numLen-2-i]; } else { result+=hanArr[num]; } } returnresult; } publicstaticvoidmain(String[]args) { Num2Rmbnr=newNum2Rmb(); System.out.println(nr.toHanStr("633779433451")); } } 2.字符串截取,中文不会被截取半个。 例如: 我和你ABC截取4位: 我和你A 我和你ABC截取2位: 我和 参考答案: publicstaticStringsubString(Stringstr,intlen){ if(str==null&&"".equals(str)){ returnnull; } //将字符串中的char数组转换成指定编码方式的byte数组的函数 byte[]strBytes=null; try{ strBytes=str.getBytes("GBK"); }catch(UnsupportedEncodingExceptione){ e.printStackTrace(); } //得到字符串的长度,判断截取字符串的长度是否在判断的范围内,否则返回原串 intstrLen=strBytes.length; if(len>=strLen||len<1){ returnstr; } System.out.println("strBytes.length="+strBytes.length); System.out.println("len="+len); intcount=0; for(inti=0;i //将每个字节数组转换为整型数,以为后面根据值的正负来判断是否为汉字 intvalue=strBytes[i]; System.out.print(value+",");//我ABC你-50,-46,65,66,67,-60,-29 //对于第一种情况: //注,一个函数转换成整型数就为两个负整数,上面的”我ABC你“, //转换成整型数就为-50,-46,65,66,67,-60,-29,但是len=6,所以截取下来的就是-50,-46,65,66,67,-60,count就为3 //如果是汉字(负),则统计截取字符串中的汉字所占字节数 if(value<0){ count++; } System.out.println("zhcount="+count); } //依据判断给定的字符串是否含有汉字,利用String类的substring()方法来截取不同的长度 //根据所统计的字节数,判断截取到字符是否为半个汉字,奇数为半个汉字 if(count%2! =0){ //如果在截取长度为1时,则将该汉字取出, //其他情况则不截取这里的截取长度则按字符长度截取(截取字节长度数-截取汉字字节数/2-截取到的半个汉字的字节数) len=(len==1)? len: len-count/2-1;//len=6-3/2-1=4我ABC //System.out.println("处理后的len="+len); }else{ //截取字符长度为字节长度-汉字所占字节长度/2(汉字占两个字节) len=len-(count/2); } returnstr.substring(0,len); } 3.个人所得税的计算,不同阶段的工资给出不同阶段的个人所得税的交付。 输入工资salary计算出应付的税款tax。 计算公式: tax=n*(salary–850)n为税率 税率表为: 工资税率 salary<8500% 850 3000 5000 8000 10000 参考答案: Doublecal(Doublesalary){ if(salary<850){ // }elseif(salary>850&&salary<3000){ salary=0.05*(salary-850d); }elseif(salary>3000&&salary<5000){ salary=0.1*(salary-850d); }elseif(salary>5000&&salary<8000){ salary=0.15*(salary-850d); }elseif(salary>8000&&salary<10000){ salary=0.2*(salary-850d); }elseif(salary>10000){ salary=0.22*(salary-850d); } returnsalary; } 问答题 1.使用系统设计的思想实现程序对不同语言,不同时区的支持。 参考: 对不同语言,不同时区的支持,涉及国际化和本地化。 国际化是指在设计软件时,将软件与特定语言及地区脱钩的过程。 当软件被移植到不同的语言地区时,软件本身不用做内部工程上的改变或修正。 本地化则是指当移植软件时,加上与特定区域设置有关的资讯和翻译文件的过程。 通常作法是将文本和其他环境相关的资源与程序代码相分离。 这样在理想的情况下,应对变化的环境时无需修改代码,只要修改资源,从而显著简化了工作。 2.什么是快速迭代失效? 如何解决? 参考: Vector等Collection类,都有类似的说明: 由Vector的iterator和listIterator方法所返回的迭代器是快速失败的: 如果在迭代器创建后的任意时间从结构上修改了向量(通过迭代器自身的remove或add方法之外的任何其他方式),则迭代器将抛出ConcurrentModificationException。 因此,面对并发的修改,迭代器很快就完全失败,而不是冒着在将来不确定的时间任意发生不确定行为的风险。 解决办法: 不适用Collection自身的remove()方法,而使用Iterator本身的方法remove()来删除对象,因为这样子可以删掉原对象,同时当前迭代对象的索引也得到同步。 3.下面是一段对数据库异常处理的代码: publicclassDBUtil{ privatestaticfinalintCAN_CONNECT=5001; privatestaticfinalintSQL_ERROR=5002; publicvoidexceptionHandle(intexception){ switch(exception){ caseCAN_CONNECT: { //dosomething... System.out.println("TheDBcan'tbeconnected...."); } caseSQL_ERROR: { //dosomething... System.out.println("TheSQLisError..."); } default: //dosomething... System.out.println("Otherreasons..."); } } } 若需要添加其他错误码,则只需添加case分支即可。 但是在异常非常多时这种方式处理会造成代码的冗余。 而且经常改动已经完成的代码还很可能会带来其他代码块的错误,带来未知的风险。 请使用设计模式改造该代码。 参考: 可用策略模式改造。 知识点: 多态、反射 一: 枚举类: packagestrategy; publicenumErrorTypeEnum{ CANNOT_CONNECT(5001,"TheDBcan'tbeconnected...."), SQL_ERROR(5002,"TheSQLisError..."); /** *状态值 */ privateintvalue; /** *类型描述 */ privateStringdescription; privateErrorTypeEnum(intvalue,Stringdescription){ this.value=value; this.description=description; } publicintvalue(){ returnvalue; } publicStringdescription(){ returndescription; } publicstaticErrorTypeEnumvalueOf(intvalue){ for(ErrorTypeEnumtype: ErrorTypeEnum.values()){ if(type.value()==value){ returntype; } } returnnull; } } 二: Strategy接口: packagestrategy; publicinterfaceStrategy{ //可添加通用方法 Stringoutline(); } 三: Cannot_ConnectStrategy类: packagestrategy; publicclassCannot_ConnectStrategyimplementsStrategy{ @Override publicStringoutline(){ return"TheDBcan'tbeconnected...."; } } 四: Sql_ErrorStrategy类: packagestrategy; publicclassSql_ErrorStrategyimplementsStrategy{ @Override publicStringoutline(){ return"TheSQLisError..."; } } 五: Context类: packagestrategy; publicclassContext{ privateStrategystrategy; publicStringcontextOutline(intexception){ strategy=StrategyFactory.getInstance().creator(exception); if(strategy! =null){ returnstrategy.outline(); }else{ return"Otherreasons..."; } } publicStrategygetStrategy(){ returnstrategy; } publicvoidsetStrategy(Strategystrategy){ this.strategy=strategy; } } 六: Client类,测试 packagestrategy; publicclassClient{ publicstaticvoidexceptionHandle(intexception){ Contextcontext=newContext(); Stringoutline=context.contextOutline(exception); System.out.println(outline); } publicstaticvoidmain(String[]args){ exceptionHandle(5001); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上海交通 银行 笔试 答案