面经问题总结
2020找实习
lxxxxxt
这个作者很懒,什么都没留下…
展开
-
Redis基础--数据类型
简介Redis (Remote Dictionary Server远程字典服务)是一个开源的,内存中的key-value数据结构存储系统,使用C语言编写。它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。支持网络,基于内存亦可持久化,提供多种语言API原创 2020-09-13 20:55:51 · 132 阅读 · 0 评论 -
Spring boot/Spring/SpringMVC
Spring 是一个“引擎”;Spring MVC 是基于Spring的一个 MVC 框架;Spring MVC提供了一种轻度耦合的方式来开发web应用。它是Spring的一个模块,是一个web框架。通过Dispatcher Servlet, ModelAndView 和 View Resolver,开发web应用变得很容易。解决的问题领域是网站应用程序或者服务开发——URL路由、Session、模板引擎、静态Web资源等等。Spring Boot 是基于Spring4的条件注册的一套快速开发整合包。S原创 2020-09-13 19:38:27 · 140 阅读 · 0 评论 -
微服务
【转载】微服务(Microservice)是什么?为什么会出现微服务?什么是微服务从思路和理念上来讲,微服务就是要倡导大家尽量将功能进行拆分,将服务粒度做小,使之可以独立承担对外服务的职责,沿着这个思路开发和交付的软件服务实体就叫作“微服务”。为什么出现微服务实际上,并非原来“大一统”(Monolith)的服务化实践不能满足要求,也不是不好,只是,它有自己存在的合理场景。对于 Monolith 服务来说,如果团队不大,软件复杂度不高,那么,使用 Monolith 的形式进行服务化治理是比较合适的,转载 2020-09-12 23:02:23 · 71 阅读 · 0 评论 -
分布式session的一致性
存在的一致性问题客户端发送一个请求,经过负载均衡后该请求会被分配到服务器中的其中一个,由于不同服务器含有不同的web服务器(例如Tomcat),不同的web服务器中并不能发现之前web服务器保存的session信息,就会再次生成一个JSESSIONID,之前的状态就会丢失。解决方案...转载 2020-09-07 12:20:25 · 207 阅读 · 0 评论 -
OOM内存溢出的原因和解决方法
一 堆溢出java.lang.OutOfMemoryError: ......java heap space.....原因:要么代码有问题,要么访问量太多并且每个访问的时间太长或者数据太多,导致数据释放不掉,因为垃圾回收器是要找到那些是垃圾才能回收,这里它不会认为这些东西是垃圾,自然不会去回收。在这个溢出之前,可能系统会提前先报错关键字为 java.lang.OutOfMemoryError:GC over head limit exceeded。这种情况是当系统处于高频的GC状态,而且回收的效果依然转载 2020-09-07 10:55:40 · 2082 阅读 · 1 评论 -
TCP半连接队列和全连接队列
(图片来源http://www.cnxct.com/something-about-phpfpm-s-backlog/)syns queue(半连接队列);accept queue(全连接队列)三次握手中,在第一步server收到client的syn后,把相关信息放到半连接队列中,同时回复syn+ack给client(第二步);比如syn floods 攻击就是针对半连接队列的,攻击方不停地建连接,但是建连接的时候只做第一步,第二步中攻击方收到server的syn+ack后故意扔掉什么也不做,导致s.转载 2020-09-06 22:52:14 · 153 阅读 · 0 评论 -
分布式缓存入门
什么数据适合缓存经过复杂计算得出的数据。频繁访问的热点数据。为了减轻数据库的访问次数和压力。分布式缓存分布式缓存是为了解决数据库服务器和Web服务器之间的瓶颈,如果一个网站流量很大,每次数据库查询耗费的时间将不容乐观。对于更新速度不是很快的站点,可以采用静态化来避免过多的数据查询,可使用Freemaker或Velocity来实现页面静态化。对于更新数据以秒级的站点,静态化不太理想,可通过分布式缓存系统来解决,如Redis、MemCache、SSDB等(都是K-V存储)。用户群体广泛就必然存原创 2020-09-05 10:44:31 · 293 阅读 · 0 评论 -
hash索引和B树索引
1 hash索引哈希索引(hash index)基于哈希表(哈希码,对应数据行的指针)实现,只有精确匹配索引所在列的查询才有效(where后的查询条件是索引所在列)。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。对于h...转载 2020-03-29 18:06:03 · 688 阅读 · 0 评论 -
HashMap为什么线程不安全
1 扩容时出现的问题多线程同时扩容时,出现环形链表(JDK1.7)。扩容原理见:HashMap底层实现–扩容原因如下:JDK1.7中,在HashMap扩容时,会改变链表中的元素的顺序,将元素从链表头部插入。说是为了避免尾部遍历。JDK1.7中扩容的transfer方法:JDK1.8 中扩容自己重写了扩容方法,resize()。1.7 是在 while 循环里面,单个计...转载 2020-03-29 17:02:38 · 301 阅读 · 0 评论 -
HashMap底层实现分析
扩容时出现环形数据结构https://blog.csdn.net/qq_21993785/article/details/80384250值覆盖https://www.cnblogs.com/lchzls/p/6714689.html https://www.cnblogs.com/lchzls/p/6714689.htmlhttps://www.cnblogs.com/lonel...原创 2020-03-24 10:37:09 · 108 阅读 · 0 评论 -
HashMap底层实现--扩容
在 HashMap 中,桶数组的长度均是2的幂,阈值大小为桶数组长度与负载因子的乘积。当 HashMap 中的键值对数量超过阈值时,进行扩容。HashMap 的扩容机制与其他变长集合的套路不太一样,HashMap 按当前桶数组长度的2倍进行扩容,阈值也变为原来的2倍(如果计算过程中,阈值溢出归零,则按阈值公式重新计算)。扩容之后,要重新计算键值对的位置,并把它们移动到合适的位置上去。1 源...原创 2020-03-29 15:42:36 · 357 阅读 · 0 评论 -
进程和线程
1 进程和线程的区别1.1 进程进程是程序执行时的一个实例。进程是系统进行资源分配的基本单位,。每个进程拥有独立的地址空间(代码段、堆栈段和数据段、只读数据段)。一个进程无法直接访问另一个进程的变量和数据结构, 如果希望让一个进程访问另一个进程的资源,需要使用进程间通信(进程间的通信)。进程之间的切换会有较大的开销。在多线程 OS 中,进程不是一个可执行的实体,即一个进程...原创 2020-03-29 11:50:45 · 145 阅读 · 0 评论 -
进程间的通信
进程间通信(InterProcess Communication)就是在不同进程之间传播或交换信息,进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。进程间通信主要包括管道, 系统IPC(包括消息队列,信号,共享存储), 套接字(SOCKET).管道普通管道/匿名管道:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,一般使用fork函数实现父子进...原创 2020-03-19 15:11:17 · 91 阅读 · 0 评论 -
Java线程池
1 线程池出现背景:对于服务器端的程序,经常面对的是客户端传入的短小的任务(执行时间多,工作内容较单一),需要服务器快速处理并返回结果。如果服务器每次接受到一个任务,创建一个线程然后执行,当面对成千上万个任务递交给服务器时,将会创建数以万计的线程。会使操作系统频繁的进行线程上下文切换,线程的创建和销毁也需要耗费系统资源。线程池能够很好的解决这个问题,它预先创建若干数量的线程,并且不能由...原创 2020-03-25 23:18:37 · 144 阅读 · 0 评论 -
Java多线程线程安全面试题
如何在Java中实现线程?可以继承 java.lang.Thread 类,该类的实例就是一个线程(本身就是调用的Runnable接口),重写run()方法。直接调用Runnable接口来重写run()方法实现线程。创建 Callable 接口的实现类,并实现 call() 方法,该 call() 方法将作为线程执行体,并且有返回值。创建 Callable 实现类的实例,使用 Futu...原创 2020-03-28 20:28:46 · 140 阅读 · 0 评论 -
数据传输的加密方式
RSA非对称加密,用三位提出者名字命名。RSA算法AES高级加密标准Advanced Encryption Standard,MD5Base64原创 2020-03-28 10:23:19 · 749 阅读 · 0 评论 -
海量数据的操作
巧妙的算法搭配合适的数据结构:Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie树,针对空间,无非就一个办法:大而化小,分而治之(hash映射)。hash映射 + hash统计 + 堆/快速/归并排序;双层桶划分Bloom filter/Bitmap;Trie树/数据库/倒排索引;外排序;分布式处理之Hadoop/Mapreduce。待续。。。举...原创 2020-03-27 22:53:59 · 142 阅读 · 0 评论 -
面试中项目经历该怎么叙述
具体而言,可以从如下几个方面有条理地详细叙述一个具体的项目。第一,介绍项目的背景,比如客户是谁,是要干什么的,分哪些模块,大致的工期是多少。这部分大家其实已经写在简历里了,这里就简要叙述下,无需详细,因为面试官不会过多关注这个项目的需求,而是关注你是如何在这个项目用到和本岗位相关的技术的。第二,介绍你做的模块里用到了哪些技术?以及有哪些亮点,这里需要提及的技术和亮点最好要和职位要求相一...原创 2020-03-26 10:50:17 · 2488 阅读 · 0 评论