XX公司面试总结

阅读更多

1.final类型有什么作用

答:final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。

 

2.两个对象比较要实现哪些方法。

答:要实现equels hashCode 方法

 

3.为什么要实现hashcode方法

答:hashCode 顾名思义是一个“散列值码”
散列值,并不能表现其唯一性,但是有离散性,其意义在于类似于进行hashMap等操作时,加快对象比较的速度,进而加快对象搜索的速度。

1hashCode()方法存在的主要目的就是提高对象比较效率。
2)在集合中判断两个对象相等的条件,其实无论是往集合中存数据,还是从集合中取数据,包括如果控制唯一性等,都是用这个条件判断的,条件如下:
    
首先判断两个对象的hashCode是否相等,如果不相等,就认为这两个对象不相等,就完成了。如果相等,才会判断两个对象的equals()是否相等,如果不相等,就认为这两个对象不相等,如果相等,那就认为这两个对象相等。

 

4.list有那几种遍历方式

 答:有两种(for, Iterator

5.list删除元素怎么删

  答:有三种删除方法

          使用普通的for循环删除,内部调整索引

for (int i =0; i < datas.size(); i++){

 

    if (datas.get(i).isSelect()) {

 

        datas.remove(i);

 

        i--;

 

    }

 

}

(2)使用倒序for循环删除

for (int i = datas.size() - 1; i >= 0; i--) {

 

    if (datas.get(i).isSelect()) {

 

        lists.remove(i);

 

    }

 

}

(3)使用迭代器删除

Iterator iterator = datas.iterator();

while(iterator.hasNext()){   

UserBean user= iterator.next();   

if(user.isSelect()){       

// 注意: 不能用listremove方法.       

 // datas.remove(next);       

 // 使用迭代器中的remove()方法,可以删除元素.       

 iterator.remove();   

 }

 }

6.hashmap 的数据结构什么样的。(https://www.jianshu.com/p/adc3df4ae4ec

答:数组+链表。java8以后增加红黑二叉树,为了优化链表过长时的查找速度。(这里简单的介绍一下红黑二叉树的特点,及优点。链表转红黑树的时机就可以了)

 

7. HashMap怎么通过key判断索引位置的?

答:通过Hash算法,获取keyHash值,通过indexFor算法计算真实索引

   // 获取key对应的value

    public V get(Object key) {

       if (key == null)

            return getForNullKey();

     // 获取keyhash

       int hash = hash(key.hashCode());

       // 在“该hash值对应的链表”上查找“键值等于key”的元素

       for (Entry e = table[indexFor(hash, table.length)];

            e != null;

            e = e.next) {

            Object k;

            if (e.hash == hash && ((k = e.key) == key || key.equals(k)))

               return e.value;

            }

        return null;

    }

 

indexFor算法的精髓

static int indexFor(int h, int length) {

    return h & (length-1);

}

8. servlet 多个filter 的执行顺序是怎么样的

之前我们控制多个filter的执行顺序是通过web.xml中控制filter的位置来控制的,放在上面的会比放在下面的先执行,如下用户登录检查过滤器会比接口日志过滤器先执行

但是当我们使用@WebFilter注解的时候发现注解里面没有提供可以控制执行顺序的参数。

通过实践发现如果想要控制filer的执行顺序可以通过控制filter的文件名来控制

比如:

       UserLoginFilter.java ApiLog.java 这两个文件里面分别是用户登录检查过滤器接口日志过滤器,因为这两个文件的首字母AU之前,导致每次执行的时候都是先执行接口日志过滤器再执行用户登录检查过滤器,所以我们现在修改两个文件的名称分别为

Filter0_UserLogin.java

Filter1_ApiLog.java

这样就能先执行用户登录检查过滤器再执行接口日志过滤器

 

9. servlet,过滤器,监听器,拦截器的区别https://www.cnblogs.com/ryelqy/p/10286216.html

答:(1servletservlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,

可以动态生成web页面它工作在客户端请求与服务器响应的中间层;

2filterfilter是一个可以复用的代码片段,可以用来转换HTTP请求,响应和头信息。

它不能产生一个请求或者响应,它只是修改对某一资源的请求或者响应;

3listener:监听器,通过listener可以坚挺web服务器中某一执行动作,并根据其要求作出相应的响应。

就是在applicationsessionrequest三个对象创建消亡或者往其中添加修改删除属性时自动执行代码的功能组件;

4interceptor:拦截器是对过滤器更加细化的应用,他不仅可以应用在service方法前后还可以应用到其他方法的前后

拦截器;

5servletfilterlistener是配置到web.xml中,interceptor不配置到web.xml中,struts的拦截器配置到strutsxml中。

spring的拦截器配置到spring.xml中;

 

10.http请求分为哪几部分.

答:(请求行、请求头、请求体)

请求行

            请求方法字段、URL字段和HTTP协议版本

            例如:GET /index.html HTTP/1.1

                get方法将数据拼接在url后面,传递参数受限

            请求方法:

                GETPOSTHEADPUTDELETEOPTIONSTRACECONNECT

        请求头(key value形式)

            User-Agent:产生请求的浏览器类型。

            Accept:客户端可识别的内容类型列表。

            Host:主机地址

        请求数据

            post方法中,会把数据以key value形式发送请求

11.http haerd 有哪些属性


XX公司面试总结_第1张图片
 
XX公司面试总结_第2张图片
 

12.http有哪些返回状态


XX公司面试总结_第3张图片
 

2XX 成功

200 OK  表示请求被服务器正常处理

204 No Content 表示请求已成功处理,但是没有内容返回

206 Partial Content 表示服务器已经完成了部分GET请求

 

3XX 重定向

301 Moved Permanently 永久重定向,表示请求的资源已经永久的搬到了其他位置 就是说资源已经被分配了新的URI

302 Found 临时重定向,表示请求的资源临时搬到了其他位置  请求的资源暂时被配到到了新的URI

303 See Other 表示请求资源存在另一个URI,应使用GET定向获取请求资源

304 Not Modified 表示客户端发送附带条件的请求(GET方法请求报文中的IF…)时,条件不满足 返回304时,不包含任何响应主体

307 Temporary Redirect 临时重定向,和302有着相同含义 尽管302标准禁止POST变为GET,但没人听他的

 

4XX 客户端错误

400 Bad Request 表示请求报文存在语法错误或参数错误,服务器不理解

401 Unauthorized 表示发送的请求需要有HTTP认证信息或者是认证失败了

403 Forbidden 表示对请求资源的访问被服务器拒绝了

404 Not Found 表示服务器找不到你请求的资源

 

5XX 服务器错误

500 Internal Server Error 表示服务器执行请求的时候出错了

502  网关错误

503 Service Unavailable 表示服务器超负载或正停机维护,无法处理请求

 

13. http get  post  请求有哪些区别

答:

GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母或数字,则原样发送;如果是空格,转换为+;如果是中文或其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII码值。而与之对应的,POST把提交的数据放置在HTTP包的包体中,文章最下面将会有代码示例。

POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的安全不是同个概念。上面安全的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为:(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击(CSRF,跨站请求伪造,也被称为:one click attack/session riding)。

 

14.数据库left, right, inner,full是什么链接的

左链接 left join on (左集)

右链接 right join on (右集)

内链接  inner join (交集)

全链接 full join (并集)

 

15.sql语句怎么优化

1.字段类型选择:

A:尽量使用TINYINTSMALLINTMEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED

BVARCHAR的长度只分配真正需要的空间

C:使用枚举或整数代替字符串类型

D:尽量使用TIMESTAMP而非DATETIME

E:单表不要有太多字段,建议在20以内

F:避免使用NULL字段,很难查询优化且占用额外索引空间

 

2. 选择合适的索引列,选择在wheregroup byorder byon从句中出现的列作为索引项,对于离散度不大的列没有必要创建索引。

主键已经是索引了,所以primay key 的主键不用再设置unique唯一索引

索引类型

主键索引 PRIMARY KEY

唯一索引 UNIQUE

普通索引 INDEX

组合索引 INDEX

全文索引 FULLTE

16.介绍一下explain

EXPLAIN SELECT查询用来跟踪查看效果:

使用EXPLAIN关键字可以知道MySQL是如何处理SQL语句的。可以帮我们分析查询语句或是表结构的性能瓶颈。

EXPLAIN的查询结果还会显示索引主键被如何利用的,数据表是如何被搜索和排序的。

id:选择标识符
select_type:表示查询的类型。

table:输出结果集的表

partitions:匹配的分区

type:表示表的连接类型

possible_keys:表示查询时,可能使用的索引

key:表示实际使用的索引

key_len:索引字段的长度

ref:列与索引的比较

rows:扫描出的行数(估算的行数)

filtered:按表条件过滤的行百分比

Extra:执行情况的描述和说明

 

Type字段:

对表访问方式,表示MySQL在表中找到所需行的方式,又称“访问类型”。

常用的类型有: ALLindexrange refeq_refconstsystemNULL(从左到右,性能从差到好)

ALLFull Table Scan MySQL将遍历全表以找到匹配的行

index: Full Index ScanindexALL区别为index类型只遍历索引树

range:只检索给定范围的行,使用一个索引来选择行

ref: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值

eq_ref: 类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key或者 unique key作为关联条件

constsystem: MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量,systemconst类型的特例,当查询的表只有一行的情况下,使用system

NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。

 

  • XX公司面试总结_第4张图片
  • 大小: 304.3 KB
  • XX公司面试总结_第5张图片
  • 大小: 309.5 KB
  • XX公司面试总结_第6张图片
  • 大小: 14.9 KB
  • 查看图片附件

你可能感兴趣的:(面试总结,面试题)