2017秋招之面试整理(1)

本文整理了Java面试中关于JSP与Servlet的区别、Tomcat服务器的配置(如内存、数据源、安全与线程数)、ORM框架Hibernate和iBatis的特性,以及Mybatis的相关面试题,包括数据库连接、设计模式和SQL连接类型等知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:JSP和servlet有哪些相同点和不同点,它们之间的联系是什么?
1: .jsp经编译后就变成了servlet(jsp本质就是servlet,jvm只能识别Java的类,不能识别jsp代码,web服务器将jsp的代码编译成Jvm能够识别的java的类)
2:jsp更擅长页面显示,servlet更擅长逻辑控制
3:servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象及HttpServlet对象得到。
4:jsp是servlet的一种简化,使用JSP只需要完成程序员需要输出到客户端的内容,Jsp中的java脚本如何镶嵌到一个类中,有jsp容器完成,而servlet是一个完整的的java类,这个类的service方法用于生成对客户端的响应。
二:了解tomcat等web服务器,独立部署应用,会配置安全,数据源,线程数。
tomcat是一种web服务器,也可以称作运行在服务器(物理意义上的计算机)上的一种软件包。用来对服务器上的HTML文档提供访问权限控制。
数据源:
数据源的配置往往都是在applicationContext.xml中配置一个dataSource的bean然后在部署时再修改JNDI配置。
配置安全:
1、错误提示:java.lang.OutOfMemoryError: Java heap space
Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错 误,Out of Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整Tomcat的使用内存即可解决此问题。
Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:set JAVA_OPTS=-Xms256m -Xmx512m
其中,-Xms设置初始化内存大小,-Xmx设置可以使用的最大内存。
线程数:
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100
enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
三:Hibernate:
它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句, 自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。
Ibatis:它能够自动在Java中的对象和在SQL数据库之间映射,因为Ibatis需要程序员自己去编写sql语句。
四:Mybatis:
10月28日(大数据面试题)
1.自我介绍
2.讲一下我简历上的项目?
3.加载数据库的步骤?
4.设计模式(工厂模式)?
简单的工厂模式:就是去创建一个创建对象的工具类。在这个工具类里面,我们就可以进行一些其他操作,比如对象的初始化。
1

.public class SimpleFactory {  
2.  
3.    public Object create(Class<?> clazz) {  
4.        if (clazz.getName().equals(Plane.class.getName())) {  
5.            return createPlane();  
6.        } else if (clazz.getName().equals(Broom.class.getName())) {  
7.            return createBroom();  
8.        }  
9.          
10.        return null;  
11.    }  
12.      
13.    private Broom createBroom() {  
14.        return new Broom();  
15.    }  
16.      
17.    private Plane createPlane() {  
18.        return new Plane();  
19.    }  
20.}  
·  public class FactoryTest {  
·    
·      public static void main(String[] args) {  
·          // 简单工厂模式测试  
·          SimpleFactory simpleFactory = new SimpleFactory();  
·          Broom broom = (Broom) simpleFactory.create(Broom.class);  
·          broom.run();  
·      }  
·  } 

工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化哪一个。工厂方法让类把实例化推迟到了子类。
抽象工厂:

1.public abstract class VehicleFactory {  
2.    public abstract Moveable create();  
3.}  

具体工厂:

·  public class BroomFactory extends VehicleFactory {  
·    
·      @Override  
·      public Moveable create() {  
·          return new Broom();  
·      }  
·  } 

抽象产品接口:

·  public interface Moveable {  
·      public void run();  
·  }

具体产品:

1.public class Broom implements Moveable {  
2.  
3.    @Override  
4.    public void run() {  
5.        System.out.println("我是Broom.我在飞...");  
6.    }  
7.  
8.}  

功能测试:
· VehicleFactory factory = new BroomFactory();
· Moveable moveable = factory.create();
· moveable.run();
抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。我们的抽象工厂中包含一系列的去构造一个抽象产品的方法,而具体产品的实现则是放在了具体工厂(图中的A和B)中进行。
抽象工厂:

·  public abstract class AbstractFactory {  
·    
·      public abstract Flyable createFlyable();  
·        
·      public abstract Moveable createMoveable();  
·        
·      public abstract Writeable createWriteable();  
·  }

具体工厂:
·

  public class Factory1 extends AbstractFactory {  
·    
·      @Override  
·      public Flyable createFlyable() {  
·          return new Aircraft();  
·      }  
·    
·      @Override  
·      public Moveable createMoveable() {  
·          return new Car();  
·      }  
·    
·      @Override  
·      public Writeable createWriteable() {  
·          return new Pen();  
·      }  
·    
·  } 

抽象产品接口:

1.public interface Flyable {  
2.  
3.    public void fly(int height);  
4.}  

具体产品:

·  public class Aircraft implements Flyable {  
·    
·      @Override  
·      public void fly(int height) {  
·          System.out.println("我是一架客运机,我目前的飞行高度为:" + height + "千米。");  
·      }  
·    
·  }

功能测试:

·  public class FactoryTest {  
·    
·      public static void main(String[] args) {  
·          AbstractFactory factory = new Factory1();  
·          Flyable flyable = factory.createFlyable();  
·          flyable.fly(1589);  
·            
·          Moveable moveable = factory.createMoveable();  
·          moveable.run(87.6);  
·            
·          Writeable writeable = factory.createWriteable();  
·          writeable.write("Hello World.");  
·      }  
·  } 

5.内连接和左外连接和右外连接?
内连接取两个表的交集,外连接分左和右,左连接取左边的全部,右连接取右边的全部。
内连接:进行连接的两个表对应的相匹配的字段完全相同的连接。
左连接:LEFT OUTER JOIN, 两个表左连接时会返回左边表中的所有行和右边表中与之相匹配的列值,如果没有则用空值代替。
右连接:RIGHT OUTER JOIN,两个表进行右连接时会返回右边表中的所有的行和左边表中与之相匹配的列值没有相匹配的用控制代替。

6.红黑树?二叉树?完全二叉树?
7.英文版的自我介绍?

It is really my honor to have this opportunity for a interview,
I hope i can make a good performance today. I'm confident that I can succeed.
Now i will introduce myself briefly
I am 24 years old,born in Shanxi province .
I was graduated from  xi’an university of technology  my major is Software Engineer.and I will get my master degree after my graduation in the year of 2018.
I spend most of my time on study,i have passed CET6. and i have acquired basic knowledge of my major during my school time.
As for hobbies i like playing bin-pangball and climbing mountions , going travelling and so on.
My knowledge in Java, mainly through \"mu class network\", \"cloud\" class to learn, and have my own blog.
That is all.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值