在应聘关于软件这方面时,会问你大学期间有平面设计应聘作品什么没,这是平面设计应聘作品软件吗?怎么平面设计应聘作品呀!

既然有傻瓜式的结构设计软件了,为什么还要在大学里学习力学、混凝土结构这些专业课?
目前的国内市场,以 PKPM 为代表的大型设计软件应用非常普遍,设计师的作用在逐渐淡化。甚至有人认为,哪怕没有学习过专业课程,只要培训一段时间,一样可以用软件做结构设计。事实上,也的确有很多设计师是半路出家、没学过力学、只学过软件操作的。既然培训一下软件操作就能做结构设计,那大学里学习各种专业课的意义又在哪里?
按投票排序
傻瓜软件是给傻瓜用的,这当然是一句笑话。这里的傻瓜都是打引号的。要不要学,力学,混凝土结构这些专业课,当然要,你们不学我就失业了。为什么要学呢?有几个原因1、真的有所谓的傻瓜设计软件吗?
傻瓜软件(或者说智能设计软件,傻瓜和智能都是一回事)可以搞定所有事情吗?我一直也幻想这有这样的智能软件,可惜现在的科技水平下,还没有。在我的专栏文章中就提到了下面的观点:计算机没法自动帮你建立一个正确的结构有限元模型,模型需要人来正确的建立(现实中,经常人也未必能够正确建立模型),这需要力学知识。计算机没法自动帮你建立一个正确的结构有限元模型,模型需要人来正确的建立(现实中,经常人也未必能够正确建立模型),这需要力学知识。举一个例子,一个普通的简支梁桥的验算。一个25m跨的简支梁桥。跨度这么小的一个桥,而且是简支梁桥,按说是很好建模分析的一个桥了。但是别小看了这么一个桥,他的宽度达到了将近17m。也就是说,这已经将近是个板了,而不是简单的梁。这个判断,是需要力学知识的。同时要做出另一个判断,大件车在桥中线附近通过,如计算时认为梁体完全整体受力,有可能导致结果偏于不安全。因此要先分析板的受力有效宽度,再进行验算。目前的傻瓜软件,可不会帮你做这个判断。在这里,我先用Ansys建立了该桥的空间分析模型,考察在车辆居中运行的时候,桥梁的空间变形情况。然后根据变形情况,得到荷载的有效分布宽度,并得到每个箱室的荷载分配。同时,利用桥梁博士分析平面分析中,每个箱室的横向分配系数。在这两个基础上,选取安全的横向分配系数。最后用Midas软件,进行验算。这中间的每个步骤都是需要有力学知识作为判断依据的。2、如果傻瓜软件(或者说智能设计软件,傻瓜和智能都是一回事)很牛叉叉,大部分问题都能搞定,还要不要学力学和混凝土结构。答案是:当然要。在傻瓜软件都能搞定大部分问题的前提下,我们设想一下这样一个场景:业主要修一栋房子或者一座桥。他打开一个傻瓜软件,设定几个参数,噼噼啪啪两下搞定,图纸什么乱七八糟的东西都开始在打印机里出来了。这时候还要设计院干啥,还要设计师干啥。该干啥干啥,该关门的关门,该回家带孩子的带孩子。哪些设计师不回家带孩子呢?业主突发奇想,这里我要搞个这个新奇玩意,输入电脑,我靠,居然搞不定。快,去找个设计师来给我看看这个被找的设计师,就可以继续工作了。3、规范都有错,何况傻瓜软件。一个好的结构师绝对不能拘泥于规范。我们有个很错误的观点,规范就是法律,是不可逾越的。有时候我甚至开玩笑说,规范就是用来违背的。实际上,规范只是标准,是一直在更新的,哪条法律每隔两三年就更新一次。(关于这条,我想有时间写个专栏文章讨论一下)规范不可迷信,傻瓜软件就更有可能错误百出了。比起计算机或者其他专业来说,土木专业课程的设置是和实际紧密相关的,因为土木太成熟了,毕业后用的东西就是上课中学的东西,不存在学的过时的问题。所以还是好好学吧。
算是自问自答吧,请原谅我絮叨一点。在科幻小说界的传世巨著《基地》三部曲中,阿西莫夫描绘了一幅很巧妙却又很意味深长的画面。基地,地盘小,武装弱,但却在虎视眈眈的强权势力中游刃有余,甚至某种意义上,是基地凌驾于这些强权势力之上。基地对周边势力的控制,靠的不是大炮巨舰的武力威慑,也不是给钱给物的经济贿赂,而是靠着穿了“宗教”马甲的“科技”。基地为周边强大而又蛮荒的强权势力提供科技援助,免费且热情,比如核电技术和生物医学技术。然而,这些科技援助被有意的“伪装”成“宗教”。其它势力的所有技术人员都要到基地接受培训,基地教给他们的只是如何操作这些高技术设备,而不会教给他们背后的原理。事实上,这些技术人员被叫做“教士”。对于他们而言,基地教给他们的不是科学技术,而是宗教;他们也不是来基地学习,而是来“朝圣”;操作核电站也并不是在操作核电站,而是在以神圣的不可改变的仪式来侍奉“科学神殿”里的“神圣力量来源”。如果他们操作错了,核电装置坏了,对他们而言则是他们的神圣仪式出了差错、不够虔诚,所以神发怒了。同样,基地的先进药物都是神的恩赐,如果不按照神的旨意服用,那么也会得到神的惩罚,比如病治不好或者副作用。对于周边的强权势力来说,基地并不是科学援助的来源,而是神灵的所在,上天眷顾之所。当然,我们能在阿西莫夫的描写中看到历史上罗马天主教廷的影子。但同样,我觉得《基地》也揭示了现代技术与从业人员之间的微妙关系。我们知道我们自己在干什么吗?我们在一步一步的使用设计软件的时候,知道它具体的原理吗?如果不知道的话,我们跟这些基地培养的科学“教士”有什么区别?一定程度上,没有什么区别。我们就是结构设计“教士”。有限元软件就是我们神庙里的神谕,规范就是我们神庙里的圣经。我们中的绝大多人,都是在依靠黑箱子里出来的神谕活着;我们中的绝大多数人,终其一生也不会走出圣经所规定的那个圈圈。“规范就是这么说的”和“软件算过去了就行”,嗯哼,“圣经就是这么说的”和“按照神谕做就行”,这就是我们结构设计师的两大信条。什么?神谕里面是什么样子的?圣经为什么是这样的?你管呢!也许这就是为什么像阿西莫夫这样的人会认为技术可能会反过来阻碍人类社会的发展:我们有可能沦为高技术的奴隶。久而久之,当年的技术资料终将被埋在历史的垃圾堆里,科技也将沦为宗教。到那时候,没有人会明白神谕的含义,没有人会明白圣经的来源。人类的命运不再属于我们自己,而是属于这些古老却顽固的神谕和圣经。我并不是危言耸听,如果所谓的结构设计师只是一个机械的执行规范、图集、有限元软件的人肉批处理程序的时候,我们离危险也就不远了。规范里就是这么规定的,所以我遵守就行了。结果呢?汶川地震的时候,有几个框架真正做到了“强柱弱梁”?图集里楼梯就是这么配筋的,所以我比着做就行了。结果呢?汶川地震的时候多少楼梯被生生拉断?软件里没有楼梯,所以我不考虑它的影响。结果呢?有多少框架结构是因为偏心布置的现浇楼梯造成了严重的震害?就像钢结构论坛上的马升东老师所说的,结构设计软件这个黑匣子给设计师的眼睛上蒙上了一块黑布,标准图集又是一匹瞎马,而业主的“科学发展观”又不断的催促设计师赶路,真可谓是“盲人骑瞎马,夜半临深池”!甚至,有很多很多的结构“设计师”在直接用着 PKPM 自动生成的图纸,这都不是“盲人骑瞎马”了,简直就是“信马由缰”了。到底是谁在设计?“设计师”?还是 PKPM?当然,你可以说 PKPM 不够好,市面上有更好的。的确,比如 Midas 就看准了这个市场,推出了 Midas Building,号称可以一站式解决问题。但即使是软件再优秀,它能替代人类设计师吗?它能具有自我更新和自我纠错的能力吗?它会摆脱黑箱子吗?如果它不再是黑箱子式的神谕,它还能叫软件吗?很不幸,就目前来看,计算机是懒惰的、愚蠢的,它们倾向于偷懒,倾向于得到平庸的回答。也许有一天,人工智能的发展会让我们拥有优秀的结构设计机器人。但至少在目前,以及未来很长一段时间内,都不会有比 Ove Arup 或者 Jorg Schlaich 更优秀的机器人设计师。没错,机器人可以在国际象棋上打败最好的人类,但我不觉得短期内机器人可以在结构设计领域胜过最好的人类,我不觉得短期内机器人会懂得结构设计的优雅和艺术。这是 Ove Arup 设计的 Kingsgate 步行桥,看上去很平淡,但你能想象的出它是怎么建造的么?这是 Ove Arup 设计的 Kingsgate 步行桥,看上去很平淡,但你能想象的出它是怎么建造的么?这是这座步行桥的建造过程,先在河岸两边分别浇筑桥体的一半,然后分别旋转90度,刚刚好拼接成一座步行桥。这座桥的施工甚至都没有打扰到每天在河里训练的赛艇运动员。这是这座步行桥的建造过程,先在河岸两边分别浇筑桥体的一半,然后分别旋转90度,刚刚好拼接成一座步行桥。这座桥的施工甚至都没有打扰到每天在河里训练的赛艇运动员。这是川口卫设计的神户 World Memorial Hall,这个穹顶又是怎么建起来的呢?这是川口卫设计的神户 World Memorial Hall,这个穹顶又是怎么建起来的呢?这是它的施工照片,穹顶先在地面拼装完成,然后向上顶升。就像变形金刚一样,自己从趴着的状态变成直立状态。这是它的施工照片,穹顶先在地面拼装完成,然后向上顶升。就像变形金刚一样,自己从趴着的状态变成直立状态。这是我画的示意图,可以想象成是顶升过程的连续曝光。不需要搭建大规模的脚手架,也不需要高空作业,只需要地面拼装,然后千斤顶同步顶升。之所以举这两个例子,是想说明为什么我说结构设计是优雅的,是艺术的。我对技术的发展很乐观,如果有一天,机器人、电脑、人工智能,不管是什么,只要它能做出这样的结构设计,我就认为我们不再需要人类设计师了。至于那会造成什么影响,完全是另一个问题,就像汽车替代了马车、网购代替了供销社一样。但很明显,你我都明白,很久很久以后,机器人才可能会拥有这样的创造力。所以,在这之前,我们还是需要人类设计师,这些优雅的设计还是需要人类设计师来完成。为了做到这些,你必须得明白背后的东西,而不是只会操作。你必须像基地的自己人一样掌握科学技术,而不是像基地培训的“教士”一样只会使用不懂原理。就像一个摄影师,为了拍出好作品,就必须至少明白光圈是什么、快门是什么、ISO 又是什么。如果只会用傻瓜相机,是很难拍出好作品的,甚至还可能会因为种种原因,造成曝光失误。回到正题,看看 GT STRUDL 的创始人 Leroy Z. Emkin 教授是怎么说的吧:NO COMPUTER SOFTWARE PRODUCT SHOULD BE USED FOR STRUCTURAL ENGINEERING COMPUTATIONS UNLESS IT HAS BEEN FULLY AND PROPERLY VALIDATED AND CERTIFIED PURSUANT TO INDUSTRY ACCEPTED STANDARDS OF ENGINEERING SOFTWARE QA AND QC.The structural engineer must apply the same high degree of care and detail when validating computer software accuracy and checking actual computer results as is applied when using time tested and traditional procedures for checking hand computations (e.g., every detail, data value, assumption, and computation must be checked and rechecked prior to use).用 Emkin 教授的一句话结尾:In other words, a good computer program does not make a good engineer, only a good engineer should use a good computer program!好软件并不会让你成为好工程师,只有好工程师才配使用好软件。
这就是技工和工程师的区别
我倒想见识一下没学过力学的结构工程师。反正我司的结构师都是研究生起步的
如果你不懂的话,软件用错了你都不知道怎么错的。
我认同最高票的观点,但我想再补充一点。最高票答案强调了知其所以然的重要性,但其实不难发现,大多数结构工程师并不知道他们使用的一些数学工具为何是可靠的。所以,这里牵扯到了一个划界的问题。这条界限可能是与软件发明之前工程师所需要掌握的知识有关。但我们不得不承认,随着软件愈发便捷,许多之前必须的知识在当今并不那么重要,尤其是与计算相关的内容。华罗庚先生曾在一篇强调计算机重要性的文章中提到他遇到的一位工程师在实战中需要解170阶的行列式。就目前的家用计算机来说,借助计算软件算出其数值非常容易。这就意味着,以线性代数作为工具的学科学生,在线性代数的学习过程中不需要掌握精细的计算方法和仅对应试有用的技巧——而目前的研究生考试中,数学科目的试题(包括微积分、线性代数和概率论)无一例外都需要一定的技巧。在工科的基础课教学中,也存在着这样的情况。以电路原理为例,国内的教材(笔者视野范围内看到的)在最基本的直流电路计算中都介绍了多种计算方法。实际上,对于这种简单电路而言,这些计算方法的差异仅仅是计算量的大小;而对于复杂电路,这些计算方法是失效的。但在研究生考试中,这些计算方法都是必须掌握的,否则很可能因为计算量过大而难以得出答案。其他的科目中也或多或少存在着类似的情况。所以,之前教学中所必须的为了减小实战中计算量而发明的方法和技巧应该被时代淘汰。所以我觉得题主的问题并不完善。软件的出现已经对这些基础课的教学产生了影响,并且这种影响会一直持续下去。未来的这些基础课教学会更加强调对于原理的理解和应用,减淡乃至忽略具体的计算方法——也就是说,工科的理论教学会带有更强的理科色彩。
强烈反对的回答。仅仅针对结构的问题来回答,不涉及设计的问题。对于结构的分析来说主要是力学问题,力学问题确实是有许多的商用软件可以使用,像Ansys这样的有限元软件是土木工程领域内可以说是常用软件了。但是这些软件可以帮助计算并不等于说计算结果就是正确的。在从实际问题到计算模型中间会有许多环节对原问题进行各种简化和假设,这些简化和假设对于使用计算机来模拟是必不可少的,但同时也是要在一定的条件下才是可行的。之所以要学习软件背后的基本理论就是为了能够正确的使用商用软件,这包括对于软件输出结果是否正确的判断以及如何在使用软件时对软件进行正确的参数选择。这些问题确实不是土木工程专业的问题,但是要想利用商用软件得到正确合理的结果是必须对软件的基本原理有所了解的,这种用于数值计算的软件是不应该被当做黑箱来使用的。
因为这些软件都不对计算结果负责,需要有工程师自己判断计算结果。(安装软件的时候好好看下安装协议)
Fool with a tool is still a fool.
知道原理非常重要。你要知道黑箱子里的结果是不是有意义。会不会出错。所谓的design intuition。
作为外行我说一句:如果你只知道用软件,不知道设计的基础知识我认为是软件再用你,而不是你在用软件我若是软件,我都想骂你怎么有这么个弱智在毁我的智商
诸位大师都已把computer-assisted analysis/design与engineering judgement的关系这一古老哲学命题给图文并茂地阐释完整。我路过插俩问题以解题主疑惑:没上过力学课,怎么知道软件里的节点是固是铰?没上过混凝土结构,怎么知道软件里收缩徐变系数该取多少?或者说,学校里面的课程才真正是这些软件的“快速”上手指南。
阿西莫夫大人有一篇短篇小说很好地回答了这个问题:------以下是关键内容节选,强烈剧透:归根结底,是谁发明了需要新型技术人员去掌握的新型号的仪器呢?比如说,谁发明了毕曼型摄谱仪?我想,一定是一个名叫毕曼的人,但是这个人肯定不是受磁带教育的,否则他怎么能作出革新呢?
因为地质环境不是哪个傻瓜都可以解决的
针对具体的问题,我其实答不上来,但这背后的原则,我想到了这样一篇文章有一个初步的翻译版本在此:
现在还有很多问题软件解决不了呢
为核战争之后的地球重建做准备,要知道那时候人类只剩下水泥和铲子,不存在设计软件了。
设计软件的作用是帮助人们减少不必要的重复性工作,并不能取代人的劳动。像pkpm,你随便输个什么参数,它都能给你做出来一套东西,但是参数要怎么选择、选择的正不正确,是需要人来做出判断的,软件本身并不能告诉你,结果正确与否。虽然现在设计规范已经很完善了,貌似建筑设计好像只要查查规范,用用软件就够了,但是规范只是给出了一个参照性的范围,你要按照这个范围来做,在规范之内还是有很大的调整空间的,如何做出调整,就需要依靠设计人员对原理的理解。一个好的设计,可以节约大量的人力物力,节省很多资源。
简单来说,软件内部的信息一定是现有的,所以它无法解决人们提出的新问题。结构设计中包含两个因素,一个是结构,即建筑不能倒还得抗震之类的。另一个是设计——在保证建筑的安全性的情况下会有多种设计选择,此时需要你自己根据建筑的需要去取舍建筑所需要的结构形式。
谈一下自己的想法,工程师有两个基本工作:1.建立模型,从复杂的工程实践中抓住主要问题,舍弃次要问题,将复杂的现实简化为现阶段数学、力学水平可以求解的模型;2.模型求解,工程师利用计算器、结构软件等工具求解,得到可以接受的结果。结构软件能不能代替工程师的工作?肯定能,但要有两个前提,1.人们对工程实践的认识充分、准确,能够建立足够真实的模型,如果工程实践能像计算机一样被准确描述的话,结构软件也是完全可以像操作系统一样的,70年前操作计算机还是门高深技术,可现在即使你连CPU这个名词都没有听过,也可以使用计算机进行基本操作;2.数学、力学和计算机的发展能够解决工程师建立的模型,模型的求解需要新的数学工具、力学的发展和新的超级计算机。至于结构中所体现的美、优雅等因人而定的主观感觉,人之间都不一定能统一,就别要求软件了。20个设计模式和软件设计面试问题 - ImportNew
| 标签: ,
不管是参加Java面试还是C#面试,和软件设计都是任何编程面试中的必问问题。实际上,编程能力和设计技巧是对彼此很好的补充。一个好的程序员通常都是一个好的软件设计人员。他们知道怎么把一个问题分割成一段段代码或者软件设计,但这些能力和技巧并不能凭空而来。你需要持续做大型、小型系统的设计和编码,并且不断从错误中学习。从 开始是一个不错的选择。好吧,这篇文章是关于一些在各种面试中频繁问到的一些设计问题。考虑到针对性和困难度,我把它们分成两个种类,分别针对初学者和有经验的人。
对中高级别的设计模式面试问题
这是一些和设计模式还有软件设计都相关的问题。这些问题需要一些思考和经验来回答。在大多数情况下,面试官并不是需要一个确切的答案,而是希望听到你的想法,你对这个问题是怎么考虑的,你能不能想通这个问题,能不能挖掘一些没有告诉你的潜在信息。在解决一个问题时你应该考虑什么等等可以使你经验大涨。总的来说,这些设计问题会让你动起脑来。有时面试官也会让你写代码,所以还是准备一下吧。如果你知道编程和设计技巧中的概念,例子和程序,你应该可以在这些问题中有突出的表现。
1. 举出一个例子,在这种情况你会更倾向于使用抽象类,而不是接口?
这是很常用但又是很难回答的设计面试问题。接口和抽象类都遵循”面向接口而不是实现编码”设计原则,它可以增加代码的灵活性,可以适应不断变化的需求。下面有几个点可以帮助你回答这个问题:
在Java中,你只能继承一个类,但可以实现多个接口。所以一旦你继承了一个类,你就失去了继承其他类的机会了。
接口通常被用来表示附属描述或行为如:Runnable、Clonable、Serializable等等,因此当你使用抽象类来表示行为时,你的类就不能同时是Runnable和Clonable(译者注:这里的意思是指如果把Runnable等实现为抽象类的情况),因为在Java中你不能继承两个类,但当你使用接口时,你的类就可以同时拥有多个不同的行为。
在一些对时间要求比较高的应用中,倾向于使用抽象类,它会比接口稍快一点。
如果希望把一系列行为都规范在类继承层次内,并且可以更好地在同一个地方进行编码,那么抽象类是一个更好的选择。有时,接口和抽象类可以一起使用,接口中定义函数,而在抽象类中定义默认的实现。
希望了解更多关于Java接口的,可以看我的文章。
2. 设计一个贩卖机,可以接收不同的货币,出售不同的产品?
这是一个开放设计问题,你可以作为练习,尝试着写出设计文档、代码和JUnit测试而不是只是解决这个问题,看看它花了你多少时间得到解决方案和得到需要的原形。理想情况下,这个问题应该可以在3个小时内解决,至少应该得到一个可以运行的版本。
3. 你有一个Smartphone类,可以派生如IPhone、AndroidPhone、WindowsMobilePhone类
它还可以是一些有着品牌的手机名称,你会怎么设计这个类系统呢。
这是另外一个设计模式练习,你可以应用你的面向对象设计技巧来得到一个设计,这个设计需要足够灵活能够支持未来产品的扩展,足够稳定能够支持在现有模型进行修改。
4. 在Java中,什么时候用重载,什么时候用重写?
对有经验的Java设计师来说,这是一个相当简单的问题。如果你看到一个类的不同实现有着不同的方式来做同一件事,那么就应该用重写(overriding),而重载(overloading)是用不同的输入做同一件事。在Java中,重载的方法签名不同,而重写并不是。
5. 设计一个ATM机?
我们所有人都使用ATM(自动柜员机)。想想你会怎么设计一个ATM?就设计金融系统来说,必须知道它们应该在任何情况下都能够如期工作。不管是断电还是其他情况,ATM应该保持 正确的状态(事务) , 想想 加锁(locking)、事务(transaction)、错误条件(error condition)、边界条件(boundary condition) 等等。尽管你不能想到具体的设计,但如果你可以指出非功能性需求,提出一些问题,想到关于边界条件,这些都会是很好的一步。
6. 你正在写一些类提供市场数据,你知道你可以不定时切换不同的厂商如Reuters、wombat或者直接的批发商, 你会如何设计你的市场数据系统。
这是一个非常有趣的设计面试问题,并且真的在一家大的投资银行问到过,如果你是用Java编码的话这是一个相当平常的场景。最主要的一点是你要有一个MarketData接口,它会有调用端需要的方法如:getBid()、getPrice()、getLevel()等等,而MarketData应该由一个MarketDataProvider通过 依赖注入(dependency injection) 组成。因此,当你修改你的MarketData 提供器(MarketDataProvider)时,调用端不会受影响,因为它们是通过MarketData接口或类的方法来访问的。
7. 在Java中,为什么不允许从静态方法中访问非静态变量?
你在Java中不能从静态上下文访问非静态数据只是因为非静态变量是跟具体的对象实例关联的,而静态的却没有和任何实例关联。你可以看我的文章查看详细的讨论。
8. 在Java中设计一个并发规则的pipeline?
并发编程或并发设计这些天很火,它可以充分利用现在不断提升的高级处理器的处理能力,而Java成为一个多线程语言也从这种情况获益良多。设计一个并发系统需要记住的最关键的点是,不可变性,本地变量和避免使用static或者。你只需要想着每一类都可以同时被多个线程同时执行,所以最好的做法就是每一个线程都处理自己的数据 ,不跟其他数据交互,并且运行时只需要最小的同步保证。这个问题可以涉及到从最初的讨论到完整的类和接口编码,但只要你记住并发中最重要的点和问题如,、、内存交互问题(memory interference)、原子性、等,你都可以回答它。
给初学者的设计模式面试问题
这些软件设计和设计模式问题大多在初学者层次时被问起,目的只是了解一下候选人(应聘者)对设计模式知道多少,如, 设计模式是什么 或者 一个特定的设计模式做什么 ?这些问题通过简单地记忆概念就可以回答,但就信息和知识而言还是有价值的。
1. 什么是设计模式?你是否在你的代码里面使用过任何设计模式?
设计模式是世界上各种各样程序员用来解决特定设计问题的尝试和测试的方法。设计模式是代码可用性的延伸。
2. 你可以说出几个在JDK库中使用的设计模式吗?
被用于多个Java IO类中。单例模式(Singleton pattern)用于Runtime,Calendar和其他的一些类中。工厂模式(Factory pattern)被用于各种不可变的类如Boolean,像Boolean.valueOf,观察者模式(Observer pattern)被用于Swing和很多的事件监听中。
3. Java中什么是单例设计模式?用Java写出线程安全的单例
单例模式重点在于在整个系统上共享一些创建时较耗资源的对象。整个应用中只维护一个特定类实例,它被所有组件共同使用。Java.lang.Runtime是单例模式的经典例子。你可以在我的文章看到更多的问题和讨论。从Java 5开始你可以使用来实现线程安全的单例。
4. 使用工厂模式最主要的好处是什么?你在哪里使用?
工厂模式的最大好处是增加了创建对象时的封装层次。如果 你使用工厂来创建对象,之后你可以使用更高级和更高性能的实现来替换原始的产品实现或类,这不需要在调用层做任何修改。可以看我的文章得更详细的解释和和了解更多的好处。
5. 在Java中,什么叫观察者设计模式(observer design pattern)?
观察者模式是基于对象的状态变化和观察者的通讯,以便他们作出相应的操作。简单的例子就是一个天气系统,当天气变化时必须在展示给公众的视图中进行反映。这个视图对象是一个主体,而不同的视图是观察者。可以在中看到Java观察者模式的完整例子。
6. 举一个用Java实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类层次?
装饰模式增加强了单个对象的能力。Java IO到处都使用了装饰模式,经典的例子就是Buffered系列类如BufferedReader和BufferedWriter,它们增强了Reader和Writer对象,以实现提升性能的Buffer层次的读取和写入。可以看了解更多。
7. 什么是MVC设计模式?举一个MVC设计模式的例子?
8, Java中什么是表示层设计模式(FrontController design pattern)?举一个使用表示层设计模式(front controller pattern)的例子?
9. 什么是责任链模式(Chain of Responsibility)?
10. 什么是适配器模式?举用Java实现适配器模式的例子?
这些留给你自己做练习,作为面试准备,试着去找出这些设计模式的答案。
这些是我在很多面试中都看到的设计模式问题,当然,在和各种各样的公司如Amzone、Microsoft等等还有很多重要的专业软件设计问题。如果你遇到一些有趣的值得分享的设计问题,不妨分享出来。
原文链接:
- 译文链接: [ 转载请保留原文出处、译者和译文链接。]
关于作者:
(新浪微博:)
微信关注: ImportNew
分享Java相关的技术文章、工具资源和热点资讯。扫描加关注,碎片时间提高Java开发技能!
博主,去哪里找到JVM官方支持的参数呀,能提供一下么?
关于ImportNew
ImportNew 专注于 Java 技术分享。于日 11:11正式上线。是的,这是一个很特别的时刻 :)
ImportNew 由两个 Java 关键字 import 和 new 组成,意指:Java 开发者学习新知识的网站。 import 可认为是学习和吸收, new 则可认为是新知识、新技术圈子和新朋友……
– 写了文章?看干货?去头条!
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 活跃 & 专业的翻译小组
– 国内外的精选博客文章
– JavaScript, HTML5, CSS
– 专注Android技术分享
– 专注iOS技术分享
– 专注Java技术分享
– 专注Python技术分享
新浪微博:
微信号:importnew
反馈建议:@
广告与商务合作QQ:
& 2015 ImportNew}

我要回帖

更多关于 应聘设计师 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信