不会的面试题

面试题:

Javaweb的内置对象又哪些?

request,response,out,page,pageContext,config,session,exception,application

application的作用是什么?

Application对象是表示用来保存所有用户(浏览器)共享的数据,直到Web服务器或pc关闭为止。共享的数据才会消失的。

过滤器,监听器,拦截器的作用

过滤器:对请求进行过滤,使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等。
拦截器:对请求进行拦截
监听器:能够监听包括request域,session域,application域的产生,销毁和属性的变化,
过滤器拦截器作用域web请求,并对一些信息做相应的更改;监听器作用于系统级别的参数的监听,一般不做更改。

MySQL的隔离级别有哪些?默认的隔离级别是什么?解决的问题是什么?

读已提交,读未提交,可重复读,串行化
MySQL默认隔离级别:可重复读
解决的问题:脏读和不可重复读
脏读:事务A读到了事务B未提交的数据
不可重复读:事务A第一次查询得到一行记录row1,事务B提交修改后,事务A第二次查询得到row1,但列内容发生了变化。
幻读:事务A第一次查询得到一行记录row1,事务B提交修改后,事务A第二次查询得到两行记录row1和row2。

css中,#和.的区别是什么?

.是类选择器,id是属性选择器,

可以对SQL进行哪些优化

用exists替换in关键字,不使用不等于

为什么要使用接口

接口的意义在于 抽象、不拘细节,从而使同类事物在同一高度具有通用及可替代性。

接口和抽象类的区别

抽象类
a、抽象类不能被实例化只能被继承;
b、包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法;
c、抽象类中的抽象方法的修饰符只能为public或者protected,默认为public;
d、一个子类继承一个抽象类,则子类必须实现父类抽象方法,否则子类也必须定义为抽象类;
e、抽象类可以包含属性、方法、构造方法,但是构造方法不能用于实例化,主要用途是被子类调用。
接口:
a、接口可以包含变量、方法;变量被隐士指定为public static final,方法被隐士指定为public abstract(JDK1.8之前);
b、接口支持多继承,即一个接口可以extends多个接口,间接的解决了Java中类的单继承问题;
c、一个类可以实现多个接口;

arraylist和linkedlist的区别

ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)的数据结构。
arrayList随机访问效率更高,linkedList添加和删除节点的效率更高

Java的集合有哪些

List,set,map接口,
Collection 接口的接口 对象的集合(单列集合)
├——-List 接口:元素按进入先后有序保存,可重复
│—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全
│—————-├ ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全
│—————-└ Vector 接口实现类 数组, 同步, 线程安全
│ ———————-└ Stack 是Vector类的实现类
└——-Set 接口: 仅接收一次,不可重复,并做内部排序
├—————-└HashSet 使用hash表(数组)存储元素
│————————└ LinkedHashSet 链表维护元素的插入次序
└ —————-TreeSet 底层实现为二叉树,元素排好序

Map 接口 键值对的集合 (双列集合)
├———Hashtable 接口实现类, 同步, 线程安全
├———HashMap 接口实现类 ,没有同步, 线程不安全-
│—————–├ LinkedHashMap 双向链表和哈希表实现
│—————–└ WeakHashMap
├ ——–TreeMap 红黑树对所有的key进行排序
└———IdentifyHashMap

ArrayList和LinkedList的区别

ArrayList,动态数组,LinkedList,双向链表

LinkedHashMap和HashMap的比较使用

LinkedHashMap是比HashMap多了一个链表的结构。与HashMap相比LinkedHashMap维护的是一个具有双重
链表的HashMap,LinkedHashMap支持2中排序一种是插入排序,一种是使用排序,最近使用的会移至尾部

Java的Map中的map.keySet()方法
将map的键放入一个set集合中

List的方法和map的方法,set的方法

Collection→List→ArrayList:
 增(add)、删(remove)、改(set)、查(get)。

Collection→Set→HashSet:
添加:add(添加元素);addAll(添加集合中所有元素)
删除:remove(删除元素);
查询集合长度:size
查询是否存在:contains

String、StringBuffer和StringBuilder之间的区别

  • String是一个字符串类,用来存放字符串常量,String的常量对象是预加载的,并且每个常量都被放在一个叫做“字符串常量池”的地方。由于是常量,所以String对象的内容不可变,所有的改变都是产生了一个新的String对象。
  • StringBuffer虽然看起来和String很像,但是与String之间并没有继承关系,不能直接赋双引号字符串常量,是个用来装字符串变量的容器。需要new出来使用。不产生新的对象,在自身进行修改。所以需要进行大量的字符串修改或拼接时,优先考虑使用StringBuffer或者StringBuilder。
  • StringBuilder基本上和StringBuffer一样,但是效率更高,但是没有同步保护,线程不安全

    map的遍历方式

  • 第一种:普遍使用,二次取值
    System.out.println("通过Map.keySet遍历key和value:");
    for (String key : map.keySet()) {
    System.out.println("key= "+ key + " and value= " + map.get(key));
    }
  • 第二种
    System.out.println("通过Map.entrySet使用iterator遍历key和value:");
    Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
    while (it.hasNext()) {
    Map.Entry<String, String> entry = it.next();
    System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
    }
  • 第三种:推荐,尤其是容量大时
    System.out.println("通过Map.entrySet遍历key和value");
    for (Map.Entry<String, String> entry : map.entrySet()) {
    System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
    }
  • 第四种
    System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
    for (String v : map.values()) {
    System.out.println("value= " + v);
    }

    DFS和BFS

    JDBC使用步骤

三次握手和四次挥手
三次握手和四次挥手
四次挥手
打开一个网站会使用到的协议
状态码

全部评论

相关推荐

点赞 评论 收藏
分享
新记话事人:你就和她说去抖音了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务