日期:2014-05-18  浏览次数:20706 次

今天去一家软件公司面试,给我出了这么几个题目,大家说说你们怎么答的啊
1、请你说说你对面向对象程序开发的理解?
2、你怎么理解多态性?
3、请说说struts中的bean与传统上的bean有什么区别?
4、你数学成绩怎么样,你觉得数学的好坏对你的程序开发有影响吗?
5、你会写复杂的sql语句吗,你写过的最长的sql语句有多长呢

大家都怎么答这些问题啊

------解决方案--------------------
1、请你说说你对面向对象程序开发的理解?

就是用对象的眼光看问题,我只能这样理解了。

2、你怎么理解多态性?

我总是把这个概念跟“重载”弄混,不认为多态这个词有毛重要。

3、请说说struts中的bean与传统上的bean有什么区别?

我只知道Spring中有bean, 只知道JSP中有javabean, Struts中有formbean,
不知道Struts中的 "bean " 是哪个,传统上的bean又是哪个。
顺带一句,我没看出来Struts的Formbean有毛用。

4、你数学成绩怎么样,你觉得数学的好坏对你的程序开发有影响吗?
一直都很好。 没有影响,哪怕是写个算法程序,也没有影响。
熟悉JAVA API(java.util.*) 比什么都强。

5、你会写复杂的sql语句吗,你写过的最长的sql语句有多长呢

不会。最长的是
Select * FROM 表1 ,表2 WHERE 表1.xx=表2.yy -_-!


回答完毕,我想反问考官几个问题:
1。请准确无误的写出“面向对象”的英文单词。
2。请谈谈多态和重载在实际应用中有何重要性?
3。请问STRUTS的自定义标签出错时,你的调试方法?
4。你的英语怎么样?能在4个小时之内看完Velocity的Tutorial文档吗?(有电子词典的帮助下)
5。请说出持久层出现的原因。
------解决方案--------------------
我个人觉得。对于定义以及理解性的问题还是比较重要的。

不过应该也要分应聘的职位。

我对于上面的题也都不能很好的解答。所以我还仅仅是个coder

如果想要向高层次发展。那你就要重视理解。

其实现在编码谁都会。就算不会。问一下也就清楚了。但是对技术的理解就不一样了。


------解决方案--------------------
做C++ -> C#

1、请你说说你对面向对象程序开发的理解?
提高程序开发的抽象高度,通过抽象来降低软件的复杂度,专注业务逻辑行为,隔离实现细节。
但实质上面向对象并没有降低任何程序开发的整体复杂性,相反对开发人员提出了更大的要求。

2、你怎么理解多态性?
多态的实质是if - elseif,本身是选择,只是比if大大提高了扩展性和自律性,但同时带来了相应的复杂度。

3、请说说struts中的bean与传统上的bean有什么区别?
bean本身耦合了Controller和Model,struts对MVC进行了更好的阐述,但不是最好的。

4、你数学成绩怎么样,你觉得数学的好坏对你的程序开发有影响吗?
学校中数学成绩中等偏上,当你一旦跃过程序开发的初级阶段会不可避免的和数学进行正面交锋,比如简单的测试和评估就需要用到统计和概率,稍稍复杂的AI就需要用到离散,矩阵,线代,微分和积分也是必不可少,最小二乘就是一个在模式识别中一个非常基础的概念。开发中无不渗透数学的概念。


5、你会写复杂的sql语句吗,你写过的最长的sql语句有多长呢
通常都是简单的sql,通过良好的domain设计可以避免出现过长的sql语言。
太长的sql表达出来只能是恶心的逻辑和高度的复杂性。

------解决方案--------------------
我觉得人家问的很好~ 最起码应聘者有回答的空间
请说说struts中的bean与传统上的bean有什么区别?
这个问题多少有点毛病,如果应聘者敢直接说出这个问题有毛病也是不错回答~bean只有一个,没有jsp servlet又哪来的struts。
------解决方案--------------------
1.通过给程序中加入扩展语句,通过 "抽象 ",把函数 "封装 "进编程所必需的“对象”中.再通过 "多态性 ", "继承 "来使得面向对象的编程语言对复杂的工作条理清晰、编写容易.
2.多态性是指允许不同类的对象对同 一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同 名问题。
3.struts的bean比较规范化大都用来传递参数的,java 中的bean是用来处理逻辑事务的比较复杂和多样.
4.数学很重要,数学成绩好可以很好的抽象和处理逻辑,简单的 数学不行连数组都不能很好的理解.
5.分页或者联合查询时需要用到一些比较复杂的sql语句,比如左右连接
------解决方案--------------------
1、面向对象纯粹就是一种思想,一种处理问题的原则,一种更接近人类现实生活的原则。
2、多态就是一个问题的多种回答而已,楼主这个试题本身就是多态吗,个人理解不同,答案当然不同。
3、这个问题麻烦啊,struts中的bean?是bean标签还是actionForm还是模型类啊。struts感觉是把bean分成了view层的FormBean(用来定义数据)和模型层(用来处理数据)。传统bean是数据库和处理逻辑一起的吧
4、偶数学一般。不过数学对编程还是很重要的,这体现在大的业务逻辑处理和小问题的细节处理上。现在人可能工具用的太多了,处理问题都是在别人的基础上开发,感觉数学用处不大了。
5、复杂的sql语句写过,这也是一种技能吗,同样有着很深的逻辑在里面,和其他语言开发一样啊。
ps:幸好me还保留了条当年写的sql:给大伙look下
select case when a.sf = '1 ' or b.sf= '1 'then '省内 ' when a.sf = '2 ' or b.sf= '2 'then '省外 ' when a.sf= '3 ' and b.sf= '3 'then '合计 ' end as sf, a.bq1+a.bq2+a.bq3+a.bq4+a.bq5 as bqhj, b.tq1+b.tq2+b.tq3+b.tq4+b.tq5 as tqhj, a.bq1,b.tq1,a.bq2,b.tq2,a.bq3,b.tq3,a.bq4,b.tq4,a.bq5,b.tq5 from ( select 1 as t, case when (GROUPING(sf) = 1) then '3 ' else sf end as sf, sum(sff.bq1) as BQ1,sum(sff.bq2)as BQ2,sum(sff.bq3) as BQ3,sum(sff.bq4) as BQ4 ,sum(sff.bq5) as BQ5 from ( select case when bq.is_im= '1 ' or bq.is_im= '2 ' then '2 ' when bq.is_im= '0 ' then '1 ' end as sf, bq.bq1,bq.bq2,bq.