10月份面试总结

最近一直在面试遇到很多问题,总结一下

1.HashMap

HashMap是非线程安全的,HashMap 不能保证随着时间的推移 Map 中的元素次序是不变的。

HashMap并可以接受 null(HashMap 可以接受为 null 的键值 (key) 和值 (value),HashMap 比较快,因为是使用唯一的键来获取对象。

HashMap 基于 hashing 原理,我们通过 put() 和 get() 方法储存和获取对象。当我们将键值对传递给 put() 方法时,它调用键对象的 hashCode() 方法来计算 hashcode,让后找到 bucket 位置来储存值对象。当获取对象时,通过键对象的 equals() 方法找到正确的键值对,然后返回值对象。HashMap 使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap 在每个链表节点中储存键值对对象。

2.用户反映你开发的网站访问很慢可能会是什么原因,如何排查

1.服务器出口带宽不够用。

2.服务器负载过大忙不过来,比如说CPU和内存消耗完了

3.网站的开发代码没写好,如mysql语句没有进行优化,导致数据库的读写相当耗费时间

4.数据库的瓶颈,也是很常见的一个瓶颈

排查

(1)某个用户反馈网站访问变慢,怎么去定位问题。首先你自己也打开下网站,看是否会出现用户反映的问题,如果你这边访问没问题,那就可能是用户那边的问题了,这块就是要先确定是用户那一方的问题还是自身比如说服务器或者网站的问题。

(2)发现确实是自己服务器或者网站的问题,那么可以利用浏览器的调试功能(一般浏览器都会有)。

(3)然后针对服务器的负载情况,可以去查看下服务器硬件(网络带宽、CPU、内存)的消耗状况。带宽方面查看流量监控看是不是已经到了峰值,带宽不够用了,如果是公司自己买服务器搭的网站服务器的话,需要自己搭建监控环境;如果用的是阿里云腾讯云这些的,那这些平台那边会提供各方面的监控比如CPU、带宽等等,在后台就可以看到了。

(4)如果发现硬件资源消耗都不高,都比较充裕,那要去看看是不是程序的问题了。这个可以通过查日志来找,比如Apache日志、mysql日志等等的错误日志,特别如mysql有个慢查询的日志功能,可以看到是不是某条mysql语句特别慢,如果某条语句花的时间太长,那这条语句很有可能有问题。

(5)至于说到的数据库太庞大,这个直接看就看得到了,比如一个表的文件大小变得特别大了。

3.springMVC执行流程,常用注解及作用

  • 在接收到 HTTP 请求后,DispatcherServlet 会查询 HandlerMapping 以调用相应的 Controller。

  • Controller 接受请求并根据使用的 GET 或 POST 方法调用相应的服务方法。 服务方法将基于定义的业务逻辑设置模型数据,并将视图名称返回给 DispatcherServlet。

  • DispatcherServlet 将从 ViewResolver 获取请求的定义视图。

  • 当视图完成,DispatcherServlet 将模型数据传递到最终的视图,并在浏览器上呈现。

所有上述组件,即: HandlerMapping,Controller 和 ViewResolver 是 WebApplicationContext 的一部分,它是普通 ApplicationContext 的扩展,带有 Web 应用程序所需的一些额外功能。 

4.springMVC常用注解

猜你喜欢

转载自www.cnblogs.com/kosinggit/p/9838192.html