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

一位拥有五年工作经验的J2EE开发者分享了他在面试过程中遇到的一些疑惑,包括JDBC连接方式、折半查找的时间复杂度等问题,并对面试中常涉及的技术原理如Spring事务和AOP的实现方式提出了自己的看法。
摘要由CSDN通过智能技术生成

一个网友的迷惑:

我工作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都是在方法的前后切入,我还真没看过在中间切入的呢。呵呵!

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

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


一个网友的迷惑:

我工作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都是在方法的前后切入,我还真没看过在中间切入的呢。呵呵!

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值