面试2019.7.2

本文是2019年7月2日的面试问题汇总,涉及自我介绍、Servlet生命周期、JSP与Servlet的区别、String的存储方式、StringBuilder与StringBuffer的区别、HashSet和HashMap的使用等内容。面试重点讨论了Java Web开发中的核心概念和技术。
摘要由CSDN通过智能技术生成

Q1:介绍一下自己

XXXXXX

Q2:什么是Servlet?

Servlet(Servlet Applet),全称Java Servlet,是用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。过程为

1.客户端发送请求至服务端。

2.服务端将请求信息发送至Servlet;

3.Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;

4.服务器将响应返回给客户端。

一个Servlet就是Java中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问应用程序。虽然Servlet可以对任何类型的请求产生响应,但通常只用来扩展web服务器的应用程序。

Q3:Servlet的生命周期。(详细)

1、客户端请求该Servlet;

2、加载Servlet类到内存;

3、实例化并调用init()方法初始化该Servlet;

4、service()(根据请求方法不同调用doGet()或者doPost());

5、destroy();

6、加载和实例化Servlet。这项操作一般是动态执行的。然而Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。

Q3:JSP与Servlet的区别?

1、jsp编译后就变成了Servlet。(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)

2、jsp侧重于视图,Servlet主要用于控制逻辑。

3、Servlet中没有内置对象,jsp中的内置对象必须通过HttpServletResponse对象,HttpServletRequest对象以及HttpServlet对象得到。

4、Servlet的应用逻辑实在Java文件中,并且完全从表示层中的HTML中分离出来。

5、jsp是由Java和HTML组合成一个扩展名为.jsp的文件。

6、Servlet更多的是类似于一个Controller,用来做控制。

Q4:String是怎样存值的?

char数组存值。

Q5:String与StringBuilder与StringBuffer的区别?

1、String类是字符串常量,StringBuilder和StringBuffer是字符串变量。

2、因为String是由final修饰的,所以String对象不可更改,值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样会造成内存空间的浪费。

3、当对字符串进行修改时,需要使用StringBuffer和StringBuilder类。这两个类的对象能够被多次修改而不产生新的对象。

4、StringBuilder速度快但是线程不安全,因此在Java5中StringBuffer被提出,StringBuffer方法中加有synchronized实现同步保证了线程安全。

(1)字符串修改上的区别。

(2)初始化上的区别,String可以为控制,后者都可以,直接报错。

总结:a、如果操作少量的数据用String;b、多线程操作字符串缓冲区下操作大量数据用StringBuffe;c、单线程操作字符串缓冲区下操作大量数据用StringBuilder;

Q6:讲讲hashset。

参考

Q7:hashMap怎样取值?

1、for循环遍历获取

 Map<String, Object> map = new HashMap<String, Object>();
        map.put("name", "jack");
        map.put("age", 13);
        //分别获取键和值
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            System.out.println("entry中key的值:" + entry.getKey() + "entry中value的值:" + entry.getValue());
        }
        //获取值
        for (Object obj : map.values()) {
            System.out.println("map中的值:" + obj);
        }

2、用迭代器获取

Map<String, Object> map = new HashMap<String, Object>();
        map.put("name", "jack");
        map.put("age", 13);
        //获取值
        Collection<Object> values = map.values();
        Iterator<Object> iterator = values.iterator();
        while (iterator.hasNext()){
            System.out.println("map中的值:"+iterator.next());
        }
        //获取键和值
        Set<Map.Entry<String, Object>> entries = map.entrySet();
        Iterator<Map.Entry<String, Object>> entryIterator = entries.iterator();
        while (entryIterator.hasNext()){
            System.out.println("entries中的键为:"+entryIterator.next().getKey()+"\nentries中的值为:"+entryIterator.next().getValue());
        }

知识点:hashMap中获取值的方式有两种:直接获取键值对的集合,然后从集合中获取值;直接获取值;

Map类中的entyrSet()获取键值对,返回类型为Map.Entry<String,Object>;然后getKey(),getValue()分别获取键值;

Map类中的keySet()获取键,返回类型为Set<String>;

Map类中的values()获取值,返回类型为Collections<Object>;

Q8:hashset与hashmap的区别。

参考

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值