遇到一位好的技术人员,哪怕只是短短的交谈也会让自己受益匪浅,即使不能与其共事,却也能找到新的方向和动力
今天下午1:00去银泰网面试, 面试官很和蔼, 是一个具有良好素养的IT人士。 面谈了很多问题,主要是设计方面的。 虽然我有不明白的地方,但他没让我尴尬,有些他就直接说答案了,有的就给出提示,有的让我回去再寻求答案。可以说,通过这次面试,我学到了很多关于技术和非技术的东西。很佩服这样的职业人, 是我遇到的不到的excellent。
列表今天面试中的问题记录:
1. 开发过的项目的介绍
Windows service
多线程 死锁 异常导致线程终止的对策
Webservice rpc 不像windows service是自动启动并运行。 Webservice是在调用时才被执行, 提到了一个词,3个字,我给忘记了
--是幂等性。 2012-6-5 补充
2. 领域驱动(DDD)
与数据库驱动不同。 在开发阶段,不需要首先建立数据库, 首先建立domain,然后实现整个业务需求的程序开发。
问题:在尚没有建立数据库时, 如何判断程序是否符合了需求?
答案:主要有2种方法判断。
我给的一个答案是:让开发人员描述对需求的理解,看是否有理解偏差, 然后进行codereview,看他的代码是否存在问题。 这是有缺陷的,因为即使程序编写没问题,也很难确保无bug。
此问题需要思考。
Domain-----POCO-----POJO
3. 敏捷开发
敏捷开发是一种理论层次的。
Scrum..........项目组中每个人都有一个角色..........
及时沟通;
每日立会,总结已完成的部分。如有问题,大家共同研讨解决方案。 安排当天的工作计划;
持续集成;
定期或不定期进行代码review, 提高团队技能。
4. O/RM
EF的理解
EF、ibatIS(目前为mybatis)、Linq to SQL的主要区别:
Linq to SQL我好像没用过。
EF与ibatiS的区别:
EF是基于context的。
ibatIS是将sql语句直接放到sqlmap。Xml文件中进行管理,sql显而易见,容易维护。EF不然
EF有延迟加载的功能。 Ibatis有缓存机制(默认是开启的),
<select id="selectCommand" resultClass="java.util.HashMap">
<![CDATA[ $querysql$]]>
</select>
诸如上面这种sql是动态传入的情况,可要注意了,如果sql有变化,可能会出问题的,需要设置属性:remapResults="true"
5. 设计思想
我列举了目前主管的java项目开发中经历的2个设计思想的应用。
6. 重构
比如一个方法有上千行代码, 要基于单一职责原则进行分解,易于维护
7. 数据库, sql优化
由于在好丽友供职时,主要做数据库开发,所有我有比较丰富的经验
8. MVC的理解
Java Web项目大都是MVC模式了
........VO
顺便讨论了项目的框架 velocity,struts ,spring spring的最新版本是3.1了,我用的是2.5
简单列举并总结了一下,比较乱。 以后整理下。 通过这次面试,我发现我还有很多的不足,我也将上下而求索。遇到一位好的技术人员,哪怕只是短短的交谈也会让自己受益匪浅,即使不能与其共事,却也能找到新的方向和动力。
当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge