程序员:开汽车,难道我要知道汽车的原理才能把车开好吗?

来源:互联网 发布:c语言程序停止运行 编辑:程序博客网 时间:2024/04/28 03:43

一个网友的迷惑:

    我工作5年了,一直做J2EE的项目,前几天去面试,一个人问我JDBC有几种连接方式,这个问题这么多年以来我从来没有遇见过,不知道大家 怎么看的。

    还有一个问题,说是折半查找的地时间复杂度,这个问题在大学刚毕业的时候我肯定会,但是这么多年过去了,我从来没有考虑过这样的问题。我不知道有没有人在J2ee的项目中遇见过这样的事情。

    还有,面试的时候,公司会为一些原理性的东西,SPring中的事务是怎么实现的,AOP是怎么实现的,不是说得怎么用而是说的是spring代码中如何实现的。

  说实话这个问题很有深度,也很好,但是我工作这么多年使用了那么长时间的spring和Hibernate,从来没有关心它内部是怎么实现的。我就有疑问了,我要使用一个工具,比如说,开汽车,难道我要知道发动机是几冲程的,什么人设计的,设计的原理是什么,为什么这么设计,什么材料设计的,知道这些我才能把汽车开好吗

 

我的答复:

    我是时间更长的菜鸟,我来应聘看看:

    一个人问我JDBC有几种连接方式

    答:我想,他问的是JDBC的几个模式吧,比如Type1, 到 Type 4, 具体的我还真分不清了,可以肯定的是:Type 4是纯Java开发的, 其中一个是jdbc-odbc桥的, 另一个是用于web页面链接(applet)远程连接的,最后一个是本地组件cli的。我们一般都选用Type4的驱动,因为无需安装数据库的专用客户端。

 

    折半查找的地时间复杂度

    答:我是野战军,我不明白什么叫折半查找,也不知道什么叫复杂度。所以是0分。因为我不需要知道这些,如同楼主自己说的,项目里从来没用到过这些东西,真遇到了,翻翻书,查查资料就行了。

 

   SPring中的事务是怎么实现的,AOP是怎么实现的

    答:这个我真没仔细读过源码,但对于事务,肯定是维持一个与当前线程或者session有关的数据库连接,在事务开始时,启动连接,并设置 setAutoCommit(false), 在事务结束时,提交或者回滚事务。至于AOP, 我理解是通过代码重构和再次包装,让一些代码先运行,再运行原始代码,最后运行一些代码。所以我见到的AOP都是在方法的前后切入,我还真没看过在中间切入的呢。呵呵!

 

   开汽车,难道我要知道发动机是几冲程的,什么人设计的,设计的原理是什么,为什么这么设计,什么材料设计的,知道这些我才能把汽车开好吗

 

  答:如果我们做的就是设计汽车,那么肯定要熟悉了,如果我们做的是维修汽车,那么也需要。但是,我们不是开车的。那些使用我们软件的最终客户,才是开车的,而我们程序员,是车辆的组装工程师,我们的任务就是选择合适的车辆组件,然后进行正确的组装,并按时交个最终用户。


原创粉丝点击