java随记

坚持就是胜利!

 

两道小面试题的背后

跟同学聊了通电话,讨论了一下需求理论,架构,软件扩展性方面
的东西。好吧。。。搞硬件的跟搞软件的瞎聊一下这个好象也不奇
怪。
软件易扩展属于开发质量要求。这样一些非功能性需求往往很重要
。理论其实很重要,嗯,从两道面试题说起,面试官都喜欢问,嗯,
俺也喜欢问。遗憾的是没听到过想要听的答案。
1,重定向redirect和内部跳转forwar有什么区别或在什么场景使
用?
   求职者多半的回答是redirect是浏览器执行的跳转动作,好吧
给8分9分的也行。 forward是应用服务器内部跳转,属同一个
request好吧,给10分也行。网上的面试宝典答案也跟这个类似。
    没毛病。但不甚满意。redirect本质是应用服务器通过http协
议发出一个html文本,里面包含refer:URL指令,浏览器解析到这个
指令后跳转到那个URL。嗯,至少了解http原理,给10分。forward
确实是内部跳转,可是怎么用颇值得探讨一下。我们知道设计模式
中的简单工厂类经典实现是 if(1) return 产品1 ; else return 
默认产品; 。 那forward所在控制器类能否扮演一个简单工厂类的
角色呢?if(1)forward 控制器1; else forward 控制器2; 应用场
景举例,比如我有一个产品查询页面,有两种不同的实现方式,一
种是通过solr引擎检出,一种是数据库直接检出结果。通过forward
,可以把两种实现同时写到产品里。可配或者根据不同条件用不同的
解决方案。这样就变成了 (页面A,控制器A ,serviceA),(页面A,
控制器B,serviceB)。两个组件共用一个页面A。 因为是两个组件,
扩展性自是极好的,比如我们还可以增加一个内存数据库查询结果
的解决方案,而只用简单的修改一下 forward所在的控制器类。简
单工厂模式加策略模式的组合应用。理解设计模式和组件的概念,
有思考,嗯,给12分。
2,mvc模式中的m,v,c 分别指什么?
   m就不必多说。但是v就很值得思量。 一般的回答是jsp和swing. 
这种说法很片面,也可以说没理解mvc。 v指view,翻译是视图,貌
似jsp和swing的回答没毛病,网上也多说是这个。但v准确的理解应
该是边界,即和系统交互的一切东西。比如触发某个任务的时钟,
调用系统的某个外部系统,人机交互的界面等.这样子的理解,即
使没有界面的功能也同样适用mvc. c也有讲究,就不说了。
    编程确实是一种艺术,但是很多东西都很抽象,理解了就是一
种思想,没理解或不通透就是一种工具。搞程序的和搞硬件的我想
理论比经验更重要。因为经验有可能是错的,理解透了的理论则不
会。

posted on 2017-04-28 14:00 傻 瓜 阅读(976) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(5)

我参与的团队

随笔分类

随笔档案

文章分类

友情链接

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

60天内阅读排行