java多线程面试题

1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对 运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支 持,它也是一个很好的卖点。2) 线程和进程有什么区别?线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和

TCP/IP 协议

1  TCP和UDP区别,应用场景TCP:为应用层提供可靠的、面向连接的和基于流的服务。使用超时重传、数据确认等方式来确保数据包被正确地发送至目的端,因此服务是可靠的。使用TCP协议通信的双方必须先建立TCP连接,并在内核中为该连接维持一些必要的数据结构,比如连接的状态、读写缓冲区,以及诸多定时器等。当通信结束时,双方必须关闭连接以释放这些内核数据。TCP基于流。基于流的数据没有边界(长度)限制,它源源不断地从通信的一端流入另一端。发送端可以逐个地向数据流中写入数据,接收端也可以逐个地

HashMap的实现原理

1、利用key的hashCode重新hash计算出当前对象的元素在数组中的下标2、存储时,如果出现hash值相同的key,此时有两种情况。(1)如果key相同,则覆盖原始值;(2)如果key不同(出现冲突),则将当前的key-value放入链表中3、获取时,直接找到hash值对应的下标,在进一步判断key是否相同,从而找到对应值。4、理解了以上过程就不难明白HashMap是如何解决hash冲突的问题,核心就是使用了数组的存储方式,然后将冲突的key的对象放入链表中,一旦发现冲突就在链表中做进一步

Http和Https的区别

一、Http和Https的基本概念Http:超文本传输协议(Http,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计Http最初的目的是为了提供一种发布和接收HTML页面的方法。它可以使浏览器更加高效。Http协议是以明文方式发送信息的,如果黑客截取了Web浏览器和服务器之间的传输报文,就可以直接获得其中的信息。Https:是以安全为目标的Http通道,是Http的安全版。Https的安全基础是SSL。SSL协议位于TCP/IP协议与各种应用层

SpringMVC常见面试题总结

1、什么是Spring MVC ?简单介绍下你对springMVC的理解?Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。2、SpringMVC的流程?(1)用户发送请求至前端控制器DispatcherServlet;(2) DispatcherServlet收到请求后,调用Handle

数据库面试题目(mysql、nosql)

一、索引聚集索引、非聚集索引都是B+树。前者B+树叶子节点包含数据,后者叶子节点包含数据地址聚集索引优点:提升IO密集负载性能;缺点:插入代价高索引缺点:维护索引耗时;占用空间大建索引须知:建在where,group by,排序等列上;不建在性别等少数类别的列上建索引不一定加速:索引没有查询所需字段一年后DB变慢了:答题方向是cpu、磁盘、内存二、Nosql1、为什么有Nosql?增加字段需要-->无格式高并发需要-->转向内存横向拓展需要-->以前是分库分表关键:传统数据库需

Redis面试题

1、什么是Redis?简述它的优缺点?Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因

SQL优化(面试题)

1、在表中建立索引,优先考虑where、group by使用到的字段。 2、尽量避免使用select *,返回无用的字段会降低查询效率。如下:SELECT * FROM t 优化方式:使用具体的字段代替*,只返回使用到的字段。 3、尽量避免使用in 和not in,会导致数据库引擎放弃索引进行全表扫描。如下:SELECT * FROM t WHERE id IN (2,3)SELECT * FROM t1 WHERE username IN (SELECT user

微服务的另一大挑战是跨多个服务的更改

比如在传统单体应用中,若有A、B、C三个服务需要更改,A依赖B,B依赖C。我们只需更改相应的模块,然后一次性部署即可。但是在微服务架构中,我们需要仔细规划和协调每个服务的变更部署。我们需要先更新C,然后更新B,最后更新A。

微服务的缺点

微服务的分布式特点带来的复杂性。开发人员需要基于RPC或者消息实现微服务之间的调用和通信,而这就使得服务之间的发现、服务调用链的跟踪和质量问题变得的相当棘手。1.开发者需要应对创建分布式系统所产生的额外的复杂因素l  目前的IDE主要面对的是单体工程程序,无法显示支持分布式应用的开发l  测试工作更加困难l  需要采用服务间的通讯机制l  很难在不采用分布式事务的情况下跨服务实现功能l  跨服务实现要求功能要求团队之间的紧密协作2.部署复杂3.内