2014年糯米网校招测试工程师题目解析
我是2014届应届毕业生,也有实习经历了。11.23参加了糯米网在天津的测试工程师的笔试,本来想要报开发,但是也知道自己的斤两。。所以就这样了。直接切入正题
选择题7个(我没有记分数)
第一道题,URL的编码 选择有ASCII UTF之类的。。正确答案,反正都知道 是ASCII(错了也别打我)
第二道题,关于HTML5的,这个本科生表示在大学里没有接触过,还是实习的时候知道了一点。HTML引入的新的类型http://www.w3school.com.cn/html5/html_5_form_input_types.asp
选项我忘记是什么了。反正我选的是week好像。。。还有其他的是传统的
第三道题关于CSS的代码题,没有照下来。挺长的记不住
第四题关于JS的生命变量不正确的是
选项是var n(忘记名字了)=new String;
var n=new Number;
var n=new BOOLEAN;
var n=NULL
我只想说我记得每一个后面都需要加上括号的。。。害的我哪个都想选。。。妈蛋了。然后最后一个没有加分号,所以我就选了最后一个OTZ(难道就是不定向?)因为JS学艺不精。。所以这道题我就谷歌一下了。然后就没有然后了。求大神回复这道题的答案。
第五道题是JS的题目,讨论的是onclick mousedown mouseup的执行顺序。每一个JS都有alter弹窗指令。这个的话参考网站http://www.codesky.net/article/201004/100539.html
第六道题是考的是jquery.mobile里的banner还有footer的默认背景颜色(我应该没有看错代码吧,反正挺不自信的这次笔试)
选项是 black and black
blue and black
grey and grey(这个是D选项,C选项忘记了)
我只知道footer默认是footer是黑色背景。然后就没有然后了。
第七道题关于AJAX发送request命令正确的是有open还有send的那个
http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_send.asp
第二大部分就是编程还有数据库的题目了
第一道题关于电影的
第一个是movie表里面有电影ID 名字 language duration 其它的忘记了。
第二个是SD表(这个英文忘记了上映表)有电影ID 以及上映时间(YYYY/MM/DD)
第一个问题是选取所有电影按照language分类,并且按照duration倒序排列。
这个主要就是group by还有DESC的考察
第二个问题是查找上映时间为XXXX到YYYY(都是YYYY/MM/DD形式啦)电影名称
我的解决方式是创建视图,将两个电影ID相同的电影名,上映时间,电影ID为视图内容,然后用select语句就好了。
create view XX as select a.file_no,a.file_name,b.show_data from movie a,SD b where a.file_no=b.file_no;
然后就是简单的select,不过要注意日期判断。由于不知道是否创建表的时候就用data类型。。所以我用的todata转换了。
show_data>= to_date('2013/8/13','yyyy/mm/dd') AND XXX
(这道题目我感觉描述不详细。)
第二道题
java当中try catch finally的问题
try
{
int a=1,b=0;
System.out.println(a/=b);
}
catch(ArithmeticException e)
{System.out.println("如果程序正常,将不输出错误日志");}
finally
{
System.out.println("程序运行完成");
}
第一个问是否存在问题
这个毋庸置疑的有问题,catch输出的内容不正确。
然后写出输出结果
两句话都输出
我写了更正之后的答案
System.out.println("如果程序不正常,将输出错误日志");
System.out.println(e);
全卷最后一道题算法编程也不算吧。描述栈与队列的区别,这个大家自行百度吧(我是谷歌党),然后用JAVA或者python写栈的一种操作,POP PUSH init empty等。
这道题我看了之后简直无奈。大学本科基本上学的都是C语言版本的数据结构,所以悲剧了。不过因为我自学了一部分C#也做过数据结构的题目,所以凭借记忆简单的改写了一点。具体怎么写还是请大家自行百度。
总结:关于糯米网的笔试,由于我自认为能力很差,所以报的是测试工程师,妹子很多这个是唯一的感慨。至于题目,也就这样,但是真的是跟本科教育脱离的有点厉害。在开发工程师笔试那一部分,我看到IOS工程师笔试就三个人。安卓还有研发工程师倒是很多,题目也听他们说了一下,就是算法,还有数据结构。
我是抱着见识世面的态度去的。o(︶︿︶)o 唉。希望接到面试OFFER的同学们加油了!!!!PS:题外话,研究生不外如是
设计模式之装饰者模式
1 概述
装饰模式(Decorator),就是可以动态的给对象增加新的功能,它要求装饰者对象和被装饰者对象有着相同的抽象父类或者接口。
当然,也可以写一个新的类来继承旧的类,在新的类中增加方法或者重写父类中的方法以此来达到扩展功能的目的,但是这样做的话,依然在编译的时候就定死了这个新的子类及其对象。想要动态的达到这一目的,就得使用这个模式了。
装饰者模式有以下几个要点(来自HeadFirst):
(1)装饰者和被装饰者有着相同的超类型
(2)可以使用多个装饰者来装饰一个对象
(3)对象可以在任何时候被装饰,动态的
(4)在该模式的使用过程中,也会用到继承,但是继承的目的不是为了获得行为,而是让装饰者和被装饰者有同样的超类型
2 示例
此模式的实现有如下几个角色:
(1)抽象构件角色:定义一个抽象接口,来规范准备附加功能的类。
(2)具体构件角色:将要被附加功能的类,实现抽象构件角色接口。
(3)抽象装饰者角色:持有对具体构件角色的引用并定义与抽象构件角色一致的接口。
(4)具体装饰角色:实现抽象装饰者角色,负责为具体构件添加额外功能。
我们此处的例子依然以手机生产为例,一个手机作为商品出售,除了机身之外,还有外壳和耳机等配件,价格自然不同,商家搭配成套餐出售,消费者也可以自定义买,最后有一个总价格。
首先定义个抽象的构件接口:
1 package org.scott.decorator; 2 /** 3 * @author Scott 4 * @date 2013-11-23 5 * @description 6 */ 7 public abstract class Component { 8 String description = "Unknown component"; 9 10 public String getDescription(){ 11 return description; 12 } 13 14 public abstract double getCost(); 15 }
然后是具体的手机Component:
1 package org.scott.decorator; 2 /** 3 * @author Scott 4 * @date 2013-11-23 5 * @description 6 */ 7 public class Phone extends Component { 8 9 public Phone(){ 10 description = "Phone"; 11 } 12 13 @Override 14 public double getCost() { 15 return 1000; 16 } 17 18 }
接着定义装饰者:
1 package org.scott.decorator; 2 /** 3 * @author Scott 4 * @date 2013-11-23 5 * @description 6 */ 7 public abstract class Decorator extends Component{ 8 public abstract String getDescription(); 9 }
下面是两种不同的套餐,也就是针对手机的两种装饰者类:
手机壳搭配销售的套餐:
1 package org.scott.decorator; 2 /** 3 * @author Scott 4 * @date 2013-11-23 5 * @description 6 */ 7 public class PhoneShellSet extends Decorator { 8 Component com; 9 10 public PhoneShellSet(Component com){ 11 this.com = com; 12 } 13 14 @Override 15 public String getDescription() { 16 return com.getDescription() + " + phoneShell"; 17 } 18 19 @Override 20 public double getCost() { 21 return com.getCost() + 30.0; 22 } 23 24 }
耳机搭配销售的套餐:
1 package org.scott.decorator; 2 3 /** 4 * @author Scott 5 * @date 2013-11-23 6 * @description 7 */ 8 public class EarpieceSet extends Decorator { 9 10 Component com; 11 12 public EarpieceSet(Component com) { 13 this.com = com; 14 } 15 16 @Override 17 public String getDescription() { 18 return com.getDescription() + " + Earpiece"; 19 } 20 21 @Override 22 public double getCost() { 23 return com.getCost() + 80.0; 24 } 25 }
功能代码就是这些,写个测试类跑一把:
1 package org.scott.decorator; 2 /** 3 * @author Scott 4 * @date 2013-11-23 5 * @description 6 */ 7 public class DecoratorTest { 8 public static void main(String [] args) { 9 Component component = new Phone(); 10 component = new PhoneShellSet(component); 11 component = new EarpieceSet(component); 12 13 System.out.println("所购买的的商品为:" + component.getDescription()); 14 System.out.println("一共花费:"+ component.getCost()); 15 } 16 }
运行结果:
所购买的的商品为:Phone + phoneShell + Earpiece
一共花费:1110.0
当然,套餐你想搞成什么样就搞什么样,可以动态的实现搭配组合,这就是装饰者模式最大的优点了吧。
在JDK的源码中最能体现装饰者模式的,就是IO系列类,空了再分析分析那几个东西,挺有意思~
上个图吧,装饰者模式的经典类图: