发表于: 2017-08-02 23:17:10
1 922
说说今天的面试题
1,说说面向对象(主要是想问对Java语言的看法)
抽象
就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处,并且会忽略与当前主题和目标无关的那些方面,将注意力集中在与当前目标有关的方面。
抽象包括两个方面, 一是过程抽象,二是数据抽象。
封装
封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。
继承:
在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承。
多态:
多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
2,三种常见设计模式(主要是想问代码的工程方面的理解)
装饰器设计模式(Decorator design pattern)被用于多个Java IO类中。
单例模式(Singleton pattern)用于Runtime,Calendar和其他的一些类中。
工厂模式(Factory pattern)被用于各种不可变的类如Boolean,像Boolean.valueOf,
观察者模式(Observer pattern)被用于Swing和很多的事件监听中。
3,算法算出100!(想考递归算法)
private static int factorial(int param)
{
if (param < 10 && param > 0)
{ return param * factorial(param + 1);
}
else {
return param;
} }
4,表结构设计(看看表结构设计的能力)
商品表:
商品 ID
商品类型 ID
商品名称
商品类型表:
商品类型 ID
商品类型名称:如书籍,服装,主板等
商品类型属性表:与商品的类型为 1:n 的关系
商品属性 ID
商品类型 ID
属性名称 如款式、风格等
商品扩展属性表:与商品为 1:n 的关系。
商品 ID
商品属性 ID 比如款式的商品属性 ID
商品属性值 比如款式为拉链夹克
5,数据库索引,添加依据,性别字段要加吗?(索引的认识)
数据库中索引的结构是一种排序的数据结构。
1、表的主键、外键必须有索引;
2、数据量超过 300 的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在 Where 子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
6,查出 班级 所有总成绩大于 300分的学生的学号和姓名(sql语句的熟悉)
select no,name from test group by name having sum(score)>300
select 学号,姓名 form test where 学号 in (select 学号 from test2 where 总分>=300)
7,说说 hashtable 和hashmap 的区别(map集合)
HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),
他们都完成了 Map 接口,主要区别在于 HashMap 允许空(null)键值(key),
由于非线程安全,在只有一个线程访问的情况下,效率要高于 Hashtable。
HashMap 允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。
HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。
因为 contains 方法容易让人引起误解。
8,大致说说springMVC的实现原理(mvc模式的理解)
客户端请求提交到 DispatcherServlet
由 DispatcherServlet 控制器查询一个或多个 HandlerMapping,找到处理请求的 Controller
DispatcherServlet 将请求提交到 Controller
Controller 调用业务逻辑处理后,返回 ModelAndView
DispatcherServlet 查询一个或多个 ViewResoler 视图解析器,找到 ModelAndView 指定的视图
视图负责将结果显示到客户端
评论