当前位置: 编程技术>移动开发
本页文章导读:
▪口试提纲 面试提纲
面试考察 1、基础知识掌握程度(必备,基础不过关就别谈经验和兴趣) 2、知识面 (可以不全面,但应该听说或了解过) 3、工作经验(具体项目介绍时,让他谈项目中的体会.........
▪ 驱除代码异味 清除代码异味
为什么我们需要有质量的代码?敏捷开发方法是用来应付那些要求代码做大量改动的反馈信息的方法。如果程序没有用一种好的表达方式来表现,那程序会很难读,难维护,难.........
▪ ListView底部分隔线的有关问题 ListView底部分隔线的问题
在工作中遇到了一个难题,就是一个listView在最下面的一个item下面没有分割线,要求是必须得有这条分割线。经过一通研究发现了这个奇怪的现象: 1. ListA.........
[1]口试提纲
来源: 互联网 发布时间: 2014-02-18
面试提纲
面试考察
1、基础知识掌握程度(必备,基础不过关就别谈经验和兴趣)
2、知识面 (可以不全面,但应该听说或了解过)
3、工作经验(具体项目介绍时,让他谈项目中的体会,然后顺着面试者的思路展开提问,只问简历的涉及点)
4、思维习惯 (风格和解决问题的能力,譬如验证码、用户密码提示、密码发送、页面间参数传递)
5、技术敏感性、兴趣、热情 (知识面、软件版本、网站、IT界名人、新技术动态)
技术敏感性/问题解决能力,而不是记忆能力
在面试过程中,针对对方的项目,问一些开放性问题:技术实现、设计、架构,开发过程
专业素养
国内、外知名Java网站、图书、项目等
常用Java软件的版本(切入项目中时)
Java基础(OO、Java core、Java util、Java IO、Exception Handling、Java Network)
自己Java基础知识定位?
overload和override的区别
String类是否可以继承?
String和StringBuffer区别
异常的两种类型,Error和Exception的区别
checked、runtime
ArrayList、Vector、LinkedList区别
List和Set的区别
什么是对象序列化?
Serializable、ObjectOutputStream.writeObject(Object obj)
Servlet和JSP基础
Servlet生命周期
Servlet启动过程
4过程,init两种情况
怎么让一个Servlet随容器启动而启动?
redirect和forward区别
setAttribute
http 301
Servlet继承关系
HttpServlet、protected
Servlet版本
2.4 2003.11 J2EE1.4
2.5 2005.9 JavaEE 5
3.0 2009.1 JavaEE 6
常用的Servlet容器
Tomcat,Resin,Jetty
doGet和doPost区别、场景
页面间传递对象的方法
request、session、application、cookie
<jsp:include page />、<%@ include file>区别
J2EE
什么是J2EE
Java EE 和J2EE的命名依据
J2EE常用术语
JNDI JMS JTA RMI/IIOP JDO JPA
J2EE是一种规范还是实现技术?
设计模式
Singleton template Command Observer facade
设计原则
高内聚低耦合 LSP OCP ISP
SSH
Struts的启动过程
ActionServlet
Action单例(实例变量声明,Webwork ThreadLocal)
Struts的标签
logic/JSTL iterator core
Bean/JSTL EL
Hibernate
id generator(native、assigned、increment、uuid)应用场景、原理及实现
lazy loading 原理、业务场景
load和get的区别
batch insert和update
domain的equals方法覆盖(Set属性)
Criteria查询
NativeSQL
乐观锁(optimistic-lock version)
Hibernate的两种实体模式:pojo和dynamic-map
领域模型
Spring
IoC
依赖注入的几种方式(构造子、setter、默认)
AOP
A的意思,具体是? 日志、安全、事务
OpenSessionInView
DAO,领域模型(架构设计)
--------------------
cookie与session原理, sso, 开发平台,
表关系 举例,后台管理模型
数据库3大设计范式
面试考察
1、基础知识掌握程度(必备,基础不过关就别谈经验和兴趣)
2、知识面 (可以不全面,但应该听说或了解过)
3、工作经验(具体项目介绍时,让他谈项目中的体会,然后顺着面试者的思路展开提问,只问简历的涉及点)
4、思维习惯 (风格和解决问题的能力,譬如验证码、用户密码提示、密码发送、页面间参数传递)
5、技术敏感性、兴趣、热情 (知识面、软件版本、网站、IT界名人、新技术动态)
技术敏感性/问题解决能力,而不是记忆能力
在面试过程中,针对对方的项目,问一些开放性问题:技术实现、设计、架构,开发过程
专业素养
国内、外知名Java网站、图书、项目等
常用Java软件的版本(切入项目中时)
Java基础(OO、Java core、Java util、Java IO、Exception Handling、Java Network)
自己Java基础知识定位?
overload和override的区别
String类是否可以继承?
String和StringBuffer区别
异常的两种类型,Error和Exception的区别
checked、runtime
ArrayList、Vector、LinkedList区别
List和Set的区别
什么是对象序列化?
Serializable、ObjectOutputStream.writeObject(Object obj)
Servlet和JSP基础
Servlet生命周期
Servlet启动过程
4过程,init两种情况
怎么让一个Servlet随容器启动而启动?
redirect和forward区别
setAttribute
http 301
Servlet继承关系
HttpServlet、protected
Servlet版本
2.4 2003.11 J2EE1.4
2.5 2005.9 JavaEE 5
3.0 2009.1 JavaEE 6
常用的Servlet容器
Tomcat,Resin,Jetty
doGet和doPost区别、场景
页面间传递对象的方法
request、session、application、cookie
<jsp:include page />、<%@ include file>区别
J2EE
什么是J2EE
Java EE 和J2EE的命名依据
J2EE常用术语
JNDI JMS JTA RMI/IIOP JDO JPA
J2EE是一种规范还是实现技术?
设计模式
Singleton template Command Observer facade
设计原则
高内聚低耦合 LSP OCP ISP
SSH
Struts的启动过程
ActionServlet
Action单例(实例变量声明,Webwork ThreadLocal)
Struts的标签
logic/JSTL iterator core
Bean/JSTL EL
Hibernate
id generator(native、assigned、increment、uuid)应用场景、原理及实现
lazy loading 原理、业务场景
load和get的区别
batch insert和update
domain的equals方法覆盖(Set属性)
Criteria查询
NativeSQL
乐观锁(optimistic-lock version)
Hibernate的两种实体模式:pojo和dynamic-map
领域模型
Spring
IoC
依赖注入的几种方式(构造子、setter、默认)
AOP
A的意思,具体是? 日志、安全、事务
OpenSessionInView
DAO,领域模型(架构设计)
--------------------
cookie与session原理, sso, 开发平台,
表关系 举例,后台管理模型
数据库3大设计范式
[2] 驱除代码异味
来源: 互联网 发布时间: 2014-02-18
清除代码异味
为什么我们需要有质量的代码?
敏捷开发方法是用来应付那些要求代码做大量改动的反馈信息的方法。
如果程序没有用一种好的表达方式来表现,那程序会很难读,难维护,难修改。
什么是代码异味?
代码异味是一种由写的很差的代码引起的一种有臭味的感觉,
异味更多的是来自一种直觉,而不是一种有据可查的标准,当你看到有味的代码时你就“感觉”
到了如果你不把异味清除,不久之后你就会习惯这种气味,不再对它有察觉
我们经常会意识不到自己在写很臭的代码,经常需要外人为我们指出这点
重复的代码
会引起程序里面多个地方相同的错误
不必要的复杂
复杂最恐怖
异常处理
没有比空的异常捕捉代码更糟糕的
长方法
你不能在一屏上看到整个方法
这通常意味着一个方法承担这多重任务
难于调试
不可测试
难于重用-> 导致程序员从方法的其它地方拷贝粘贴出重复的代码
复杂的条件语句-> 挑战大脑的逻辑分析能力
方法长度:组织归纳水平比控制代码行数更重要
变量名称
使用能表意的名称
不要用单个字母做名称
也不要使用太长的名称
最臭的代码
冗长的类
重复的代码
淘汰的方法
不必要的塑型(cast)
过度使用设计模式
代码除味
代码复查!
一些设计原则
高聚合
低耦合
Demeter定律 [不要告诉我,我会通知你]
Liskov替换原则
先让它跑起来,再让它无误,再让它快速
开发/闭合原则
反向依赖
单一责任原则
为什么我们需要有质量的代码?
敏捷开发方法是用来应付那些要求代码做大量改动的反馈信息的方法。
如果程序没有用一种好的表达方式来表现,那程序会很难读,难维护,难修改。
什么是代码异味?
代码异味是一种由写的很差的代码引起的一种有臭味的感觉,
异味更多的是来自一种直觉,而不是一种有据可查的标准,当你看到有味的代码时你就“感觉”
到了如果你不把异味清除,不久之后你就会习惯这种气味,不再对它有察觉
我们经常会意识不到自己在写很臭的代码,经常需要外人为我们指出这点
重复的代码
会引起程序里面多个地方相同的错误
不必要的复杂
复杂最恐怖
异常处理
没有比空的异常捕捉代码更糟糕的
try{... } catch (Exception e){ }
长方法
你不能在一屏上看到整个方法
这通常意味着一个方法承担这多重任务
难于调试
不可测试
难于重用-> 导致程序员从方法的其它地方拷贝粘贴出重复的代码
复杂的条件语句-> 挑战大脑的逻辑分析能力
方法长度:组织归纳水平比控制代码行数更重要
变量名称
使用能表意的名称
不要用单个字母做名称
也不要使用太长的名称
最臭的代码
冗长的类
重复的代码
淘汰的方法
不必要的塑型(cast)
过度使用设计模式
代码除味
代码复查!
一些设计原则
高聚合
低耦合
Demeter定律 [不要告诉我,我会通知你]
Liskov替换原则
先让它跑起来,再让它无误,再让它快速
开发/闭合原则
反向依赖
单一责任原则
[3] ListView底部分隔线的有关问题
来源: 互联网 发布时间: 2014-02-18
ListView底部分隔线的问题
在工作中遇到了一个难题,就是一个listView在最下面的一个item下面没有分割线,要求是必须得有这条分割线。经过一通研究发现了这个奇怪的现象:
1. ListActivity有这条底部分割线。
2.在Activity中只有listview,没有别的控件的话也会有。
其实ListActivity也是一个Activity,只不过在其中使用了SetContentView(listView)方法设置了一个listView作为其显示的View而已。所以结论就是只要这个activity调用了SetContentView(listView)就会有这条底部分割线。
那么什么情况下才不会有这条分割线呢?在Activity中如果调用setContentView(View)而ListView只是内嵌入到这个View的话有可能会没有这条分割线。
分析其原因:通过加断点调试发现在listView中,所有的分割线都是通过画一个很窄的矩形来实现的,但是在画分割线前都会都会判断目前的位置A和listView的长度B,如果A=B了,那么就不会画这条分割线了。但是将Listview嵌入到一个View中,一般会设置为高度为wrap_content,这种情况下,最后那条分割线的位置刚好等于listView的高度,所以系统不会画上这条分割线。那要怎么样才会画上呢?很简单,将ListView的高度设置为fill_partent就可以了。
当然以上所说的都是item很少的情况下,如果item很多以至于必须显示滚动条的话,那最后一个item下面是肯定不会有分割线了。
转自:http://blog.chinaunix.net/space.php?uid=20771867&do=blog&id=2915442
在工作中遇到了一个难题,就是一个listView在最下面的一个item下面没有分割线,要求是必须得有这条分割线。经过一通研究发现了这个奇怪的现象:
1. ListActivity有这条底部分割线。
2.在Activity中只有listview,没有别的控件的话也会有。
其实ListActivity也是一个Activity,只不过在其中使用了SetContentView(listView)方法设置了一个listView作为其显示的View而已。所以结论就是只要这个activity调用了SetContentView(listView)就会有这条底部分割线。
那么什么情况下才不会有这条分割线呢?在Activity中如果调用setContentView(View)而ListView只是内嵌入到这个View的话有可能会没有这条分割线。
分析其原因:通过加断点调试发现在listView中,所有的分割线都是通过画一个很窄的矩形来实现的,但是在画分割线前都会都会判断目前的位置A和listView的长度B,如果A=B了,那么就不会画这条分割线了。但是将Listview嵌入到一个View中,一般会设置为高度为wrap_content,这种情况下,最后那条分割线的位置刚好等于listView的高度,所以系统不会画上这条分割线。那要怎么样才会画上呢?很简单,将ListView的高度设置为fill_partent就可以了。
当然以上所说的都是item很少的情况下,如果item很多以至于必须显示滚动条的话,那最后一个item下面是肯定不会有分割线了。
转自:http://blog.chinaunix.net/space.php?uid=20771867&do=blog&id=2915442
最新技术文章: