今天被问微服务,这几点,让面试官刮目相看

坐标西安 面试中电后端Java岗 被面试官狂问mybatis 因文档内容实在过多,小编下面会在不影响大家阅读的情况下,尽可能地为大家做更多的展示,有感兴趣想要获取学习的朋友工众号。电话面,一位面试官,女面试官,声音非常和蔼,我都惊呆了,听声音就感觉非常的尊重面试者,哈哈哈哈,25分钟左右。没要自我介绍,完全按照简历上的项目来问。请写出一个高效的算法。获取完整文档免费下载方式。... 阅读详情

点击上方蓝色“程序猿Damon”,选择“设为星标”

回复“yeah”获取整理的学习资料

油菜花开了,春天来了,金三银四,换新季!

在金三银四的季节,不少人在换工作,也许在面试时,觉得技术交流的都不错,在跟HR交流时,薪资谈得也很得意,但是在离开之后,却一直没有HR联电的下文,似乎已经忘记,甚至当从来没发生过了。这就是面试时,可能认为回答的不错,但是实际已经给对方留下了反面的影响。其实也许是你的技术可以的,但是跟HR谈的薪资可能给不了,也许你的技术还是少了火候,没有与期望薪资对等,尤其在一个二线城市,对薪资那更是。。。你懂的!

今天分享的是微服务的高并发情形,在前面讲过了微服务的理念以及模块的角度划分等。

在微服务高并发下有几点需要考虑:微服务的划分、高并发、数据DB、中间件或缓存问题、IO性能瓶颈问题、监控问题、自动化部署问题等。

一、微服务的划分

微服务的划分:前面说过了,服务的划分,可以从水平的功能划分,也可从垂直的业务划分,粒度的大小,可以根据当前的产品需求来定位,最关键的是要做到:高内聚、低耦合。

听到高内聚、低耦合这六个字,面试官也许会觉得这小伙子不错,有一定的技术设计的基础。那么接下来,问题来了。什么是高内聚,什么是低耦合呢?所谓高内聚:就是说每个服务处于同一个网络或网域下,而且相对于外部,整个的是一个封闭的、安全的盒子,宛如一朵玫瑰花。

盒子对外的接口是不变的,盒子内部各模块之间的接口也是不变的,但是各模块内部的内容可以更改。模块只对外暴露最小限度的接口,避免强依赖关系。增删一个模块,应该只会影响有依赖关系的相关模块,无关的不应该受影响。

所谓低耦合:从小的角度来看,就是要每个Java类之间的耦合性降低,多用接口,利用Java面向对象编程思想的封装、继承、多态,隐藏实现细节。从模块之间来讲,就是要每个模块之间的关系降低,减少冗余、重复、交叉的复杂度,模块功能划分尽可能单一。

二、高并发

一个公司一旦做大了,就需要考虑兼容、扩展、压力等问题。高并发是一个常见的词语。然后如何才能保证高并发,这是一个问题。

高并发从以下几个方面来讲:

1. 幂等性

2. 接口代码的规范性

3. 操作 DB 的性能

4. 读写分离操作

5. 服务的横向扩展

6. 服务的健壮性(缓存、限流、熔灾)

幂等性:所谓幂等性,就是说一次和多次请求某一个资源时对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意次执行所产生的效果和返回的结果都是一样的。这种场景是一个很有效的实现高并发的情景,设想,用户充值某个会员,在并发情况下,用户由于误操作,或者由于网络、时间等问题导致重试机制的发生时,可能会触发触发多次交易的扣费,这样给用户一个很不好的体验。此时,就需要接口幂等性来解决这类问题。

幂等性解决方案有以下几种:

(1) token机制

(2) 接口逻辑实现幂等性

(3) 数据库层处理实现幂等性

token机制:数据提交时携带token,token放到redis,token有效时间,提交后台后校验token,同时删除token,生成新的token并返回。

接口的幂等性:常见的接口幂等性,是定义接口时,加上参数序列号、来源等,序列号与请求来源联合唯一索引,这样可以有效判断本次请求方与请求的序列号,防止重复的请求。

数据库处理:DB层处理有多种方式,1. 悲观锁,2. 乐观锁,3. 唯一索引、组合唯一索引,4. 分布式锁

悲观锁:所谓悲观锁,是指存在危机意识,事先(查询时)加锁处理,防止事情发生。如:

select * from xxx where id= 1 for update

乐观锁:是指存在乐观心理,只在更新时加锁,乐观锁通常用 version 版本号来控制如:

update xxx set name=#name#,version=version+1 where version=#version#

也可以通过条件限制,这里就使用了组合唯一索引来处理,如:

update xxx set name=#name#,version=version+1 where id=#id# and version=#version#
‍

分布式锁:通过 redis、zookeeper 来设置分布式锁,当插入或更新数据时,获取分布式锁,然后做操作,之后释放锁。

接口的规范性:接口的性能如何,最终还是跟接口的实现逻辑有关,比如代码规范,逻辑实现等,尤其是业务逻辑复杂的情况下,这点需要注意的。

操作DB:对于业务的持久层,用的比较多的就是mybatis、hibernate,还有可能是JPA,无论是哪个,最终都是通过工厂类注入 bean,最后执行 SQL 来操作 DB。所以这里尤为重要的是 SQL 的写法,SQL的优化决定着操作DB的时间以及效果,如果写得不好的话,则会导致死循环,或死锁,或内存溢出。另外测试时,使用真实、规范的数据进行测试,并在测试时不要局限于相同的数据,最后就是并发压测了。 

读写分离:当服务足够多,数据足够多时,有可能读与写的占比为:10:1,此时读写应该分离,这样可以有效减少因为读的频繁操作导致的写的性能下降。常见的读写分离的方法有:采用mycat中间件方式、amoeba直接实现读写分离、手动修改mysql操作类直接实现读写分离和随机实现的负载均衡,权限独立分配、mysql-proxy(还是测试版本,时间消耗有点高)。

服务的横向扩展:对于服务的请求越来越多时,此时需要对服务进行多节点部署,这样减少单机带来的服务负载压力。

服务的健壮性:服务的健壮性包括缓存、限流、熔灾。

对于缓存,大家都知道,有常见的许多中间件如:redis、kafka、RabbitMq、zookeeper。对于一些session等常用redis来缓存、共享。对于一些大一点的数据如果嫌弃加载慢,也可以采用缓存机制来解决。

什么叫限流呢?很好理解,就是限制节点的流量,限制服务的请求数。那么如何做到限流呢?常用的限流算法比如有计数器算法、令牌桶算法、漏桶算法。有几种方式:利用 springcloud 组件 zuul 来对请求进行限流,主要是通过谷歌提供的 RateLimiter 结合一些限流算法来限流比较常用。利用 redis 同样可以做限流算法的,甚至可以利用 nginx 直接作计数限流,可以对请求速率进行限制、对每个 ip 连接数量进行限制、对每个服务的连接数量进行限制。如:

#对请求速率进行限制
limit_req_zone $binary_remote_addr zone=req_one:20m rate=12r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
#对每个ip连接数量进行限制
limit_conn_zone $server_name zone=perserver:20m;
#对每个服务的连接数量进行限制
server{
  listen 80;
  location / {
    proxy_pass http://ip:port;
    limit_req zone=req_one burst= 80 nodelay;
    limit_conn addr 20;
  }
}

其实在Springboot2.x中,推出自己的Spring-Cloud-Gateway来作网关,同时Spring-Cloud-Gateway中提供了基于Redis的实现来达到限流的目的。

对于熔灾,或者说熔断,这个在实际的业务当中是很有必要的。比如:用户在某一商城秒杀某一件物品,或在某米商城上抢购某一部手机,在准点抢购时,发现人很多,请求很多,这时,主要是需要有限流机制,同时也需要有熔灾(熔断),给用户留下一个很好的体验的感觉。当用户在点击抢购按钮后,如果当前的请求数很多,需要用户等待,这是需要给一个友好的界面让用户去等待,而不是直接给用户提示请求失败,或者报异常,这样的红色抛出是一个非常不好的事情,用户可能会骂街的,下次也不会逛了。

Spring-Cloud-Gateway作网关时,过滤器时使用 HystrixGatewayFilterFactory 来创建一个 Filter 实现基于 Route 级别的熔断功能。

三、中间件或缓存问题

随着用户的越来愈多,所有的服务压力也会指数型递增,这时候缓存是一个很好的减轻服务压力的方式。这样可以有效缓冲请求对服务的负载压力。常见的缓存可能是Redis、MQ(RabbitMQ、RocketMQ)、Kafka、ZooKeeper等。

Redis 一般主要做 session 或用户信息的缓存,实现多机中 session 的共享。也会用来作分布式锁,在分布式高并发下实现锁的功能,例如实现秒杀、抢单等功能。还会被用作一些订单信息的缓存,防止大量的订单信息被积压而导致服务器的负载很高。总之,Redis 常被用来作为一种缓冲剂使用。

MQ 常见的有 RabbitMQ、RocketMQ、ActiveMQ、Kafka等,以下是各种之间的对比:

特性

ActiveMQ

RabbitMQ

RocketMQ

Kafka

单机吞吐量

万级,吞吐量比RocketMQ和Kafka要低了一个数量级

万级,吞吐量比RocketMQ和Kafka要低了一个数量级

10万级,RocketMQ也是可以支撑高吞吐的一种MQ

10万级别,这是kafka最大的优点,就是吞吐量高。一般配合大数据类的系统来进行实时数据计算、日志采集等场景

时效性

ms级

微秒级

ms级

延迟在ms级以内

可用性

高,基于主从架构实现高可用性

高,基于主从架构实现高可用性

非常高,分布式架构

非常高,kafka是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用

消息可靠性

有较低的概率丢失数据

 

经过参数优化配置,可以做到0丢失

经过参数优化配置,消息可以做到0丢失

功能支持

MQ领域的功能极其完备

基于erlang开发,所以并发能力很强,性能极其好,延时很低

MQ功能较为完善,还是分布式的,扩展性好

功能较为简单,主要支持简单的MQ功能,在大数据领域的实时计算以及日志采集被大规模使用,是事实上的标准

ZooKeeper 也是经常会存储海量数据,例如 Hadoop 中,在使用 YARN 作资源调度时,采用 ZooKeeper 来存储海量的状态机状态以及任务的信息(包括历史信息)。

四、IO性能瓶颈问题

每个行业的业务也许不同,但是大部分行业是存在存储的,说到最直接的数据库,其他的包括电商、物流、AI算法等。电商的存储在于页面的数据与后端存储的交互;物流的存储在于物流信息、物品信息的存储;AI算法在于数据集、模型、镜像文件、训练代码等的存储。整的来说,不管是什么存储,只要跟磁盘、硬盘有关系,就会涉及到IO的问题。

对于IO,在阻塞模式下,经常有线程不够用,就算使用线程池复用线程也无济于事;阻塞I/O模式下,会有大量的线程被阻塞,一直在等待数据,这个时候的线程被挂起,只能干等,CPU利用率很低,即导致系统的吞吐量差,内存占用很高,甚至导致内存溢出。如果网络I/O堵塞或者有网络抖动或者网络故障等,线程的阻塞时间可能很长。整个系统也变的不可靠。

什么是NIO?java.nio 是指JDK 1.4 及以上版本里提供的新api(New IO) ,为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。NIO核心API:Channel、Buffer、Selector。

Channel:NIO的通道类似于流,但有些区别:1. 通道可以同时进行读写,而流只能读或者只能写,2. 通道可以实现异步读写数据,3. 通道可以从缓冲读数据,也可以写数据到缓冲。

缓存Buffer:缓冲区本质上是一个可以写入数据的内存块,然后可以再次读取,该对象提供了一组方法,可以更轻松地使用内存块,使用缓冲区读取和写入数据通常有这四个步骤:

1. 写数据到缓冲区;

2. 调用buffer.flip()方法;

3. 从缓冲区中读取数据;

4. 调用buffer.clear()或buffer.compat()方法

当向Buffer写入数据时,Buffer会记录下写了多少数据,一旦要读取数据,需要通过flip()方法将Buffer从 write 模式切到 read 模式,在 read 模式下可以读取之前写入到Buffer的所有数据,一旦读完了所有的数据,就需要清空缓冲区,让它可再被写入。

Selector:一个组件,可以检测多个NIO channel,看看读或者写事件是否就绪。多个Channel以事件的方式可以注册到同一个Selector,从而可以用一个线程处理多个请求。

当你调用Selector的select()或者 selectNow() 方法时它只会返回有数据读取的SelectableChannel的实例。

另外,就是利用NIO实现大文件的分片处理。

五、监控问题

随着业务规模的不断扩大,面临着服务数量不断增加、线上环境日益复杂、服务依赖错综复杂等运维痛点,服务依赖自动梳理、调用实时追踪、异常明细分析、调用链路追踪、实时容量规划、问题根因分析等基本的运维诉求及解决方案就尤其重要。

监控的目的主要包括性能监控、服务的健壮性、运维管理、问题自动分析、动态扩容等,监控的方式也有很多,比如Springcloud自己提供的Dashboard,实现服务的链路跟踪。

K8S的Dashboard,可以追踪看到每个服务pod的状态以及各项服务的系统指标。除了k8s的基本监控外(pod运行状况、占用内存、cpu)。为了对微服务项目中的各种参数线程池、TPS、QPS、RT、系统负载、thread、mem、class、tomcat、gc、等jvm指标进行监控。可以采用基于 K8S 的 promethus job 对业务的metrics指标采取收集。同时由于 promethus 支持 grafana前端UI界面。

六、自动化部署问题

随着服务的越来越多,服务的运维管理也是一个麻烦事,如果有一套自动化部署的机制,则可以一键触发自动部署所有微服务,那绝壁是很好的一件事。这块可以参考前面发表的文章:微服务自动化部署CI/CD 一文,很详细的介绍了自动化部署的实战。

好了,以上所说的,也许对于面试的你会有一定作用的!

 

个人网站:http://www.damon8.cn

 

热文推荐

浅谈JVM及其原理、什么是GC

基础设施服务k8s快速部署之HA篇

论Http、Socket、WebSocket、WebService(SOAP)之间的区别

Go语言入门基础之库源码文件

Go语言入门基础之命令源码文件

Springcloud Oauth2 HA篇

Spring Cloud Kubernetes之实战一配置管理

Spring Cloud Kubernetes之实战二服务注册与发现

Spring Cloud Kubernetes之实战三网关Gateway

求关注

关注公众号,回复入群,获取更多惊喜!公众号(程序猿Damon)里回复 ES、Flink、Java、Kafka、MQ、ML、监控、大数据、k8s 等关键字可以查看更多关键字对应的文章。

如有收获,点个在看,谢谢

健壮性测试方法与工具   教程名称:健壮性测试方法与工具       课程目录 : 【】IO字节流节点流拷贝工具健壮性 【】Linux19-模拟宕机所有服务器角色测试MFS服务健壮性_rec 【】基于场景模型的BGP_4健壮性测试 【】基于规范变异的BGP_4健壮性测试研究 【】虚拟健 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。 立即下载

相关推荐

利用随机矩阵理论(random matrix theory)确定微生物网络构建阈值

利用随机矩阵理论(random matrix theory)确定微生物网络构建阈值

微生物生态学分析 7639

web服务优化与健壮性改进_创建健壮的微服务架构所涉及的组件

web服务优化与健壮性改进 在本文中,我们将简要学习构建强大的微服务应用程序所需的各种软件组件。 在简要了解每个架构组件之前,我们将陈述设计微服务架构时出现的一般查询。 1.微服务架构组件 每当我们创建微服务应用程序时,我们都会想到以下问题 我们将如何注册微服务,以便客户可以使用该注册信息(服务发现)并调用微服务? 我们如何确保所构建的微服务应用程序完全容错并且高度可用? 我...

最佳 Java 编程 379

STM32G4实战:用CubeMX+Keil五分钟搞定FreeRTOS多任务LED控制(避坑指南)

本文详细介绍了如何在STM32G4系列芯片上使用CubeMX和Keil快速配置FreeRTOS实现多任务LED控制,包括环境准备、时钟配置、任务创建及常见问题解决方案。重点解决了时钟源冲突等高频问题,并提供了优化建议和进阶应用示例,帮助开发者高效完成嵌入式开发任务。

joy55的博客 223

golang服务健壮性---(异常处理)

golang异常处理、golang服务健壮性

课前的博客 5688

吉林大学软件工程章节测验 第九章 答案+解析

4.【判断题】估算软件规模有代码行技术和功能点技术两种方法,其中代码行方法估计实现一个功能所需要的源程序行数,其不依赖项目所使用的开发语言,并且具有较好的直观性。3.【单选题】软件项目估算时,若计划人员对每个功能分别按最佳的、可能的、悲观的三种情况给出功能点估计值,记作a, m, b,则估算的期望值E的公式为( )。8.【判断题】在工程网络图中,如果在由起始事件至终止事件所构成的一条路径上,所有事件的最早时刻都和最迟时刻都相同,那么这条路径就是关键路径。4.【单选题】配置管理贯穿软件开发的整个过程。

m0_51459931的博客 1431

基于计算机视觉的Windows自动化工具openclaw-win:从原理到实战

计算机视觉与自动化技术正深刻改变人机交互方式,其核心在于让机器具备“感知-决策-执行”的能力。通过图像采集与处理算法,程序可以识别屏幕上的特定元素;结合模拟输入技术,便能自动执行点击、拖拽等操作,形成完整的自动化闭环。这一技术栈在软件测试、数据采集、重复性办公任务等领域具有重要价值,能够显著提升工作效率。开源项目openclaw-win正是这一理念的工程实践,它整合了图像识别与模拟操作模块,为开发者提供了一个研究自动化技术的具体样本。项目涉及模板匹配、坐标计算等关键技术点,并需处理屏幕适配、操作延迟等实际问

weixin_28745975的博客 332

如何健壮你的后端服务?

  对每一个程序员而言,故障都是悬在头上的达摩克利斯之剑,都唯恐避之不及,如何避免故障是每一个程序员都在苦苦追寻希望解决的问题。对于这一问题,大家都可以从需求分析、架构设计 、代码编写、测试、code review、上线、线上服务运维等各个视角给出自己的答案。本人结合自己两年有限的互联网后端工作经验,从某几个视角谈谈自己对这一问题的理解,不足之处,望大家多多指出。   我们大部分服务都是如下的结...

weixin_30767835的博客 402

一种基于频域滤波法消除干扰项与角谱法重构技术的数字全息显微台阶形貌测量实例分析

一种基于频域滤波法消除干扰项与角谱法重构技术的数字全息显微台阶形貌测量实例分析

简单光学 2034

颠覆微服务认知:深入思考微服务的七个主流观点

原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行。那么,你觉得这个数值多少才合适呢? 微服务架构现在已经成为了企业应用架构的必聊话题,本文沉淀了作者多年...

梁桂钊的博客 1930

Qt数据导出实战:从SQLite到CSV的完整流程(附内存优化技巧)

本文详细介绍了在Qt框架下,将SQLite数据库中的数据高效导出为CSV格式的完整流程。针对大数据量场景,重点分享了分块读取、流式写入等内存优化技巧,有效解决了嵌入式或资源受限环境中导出功能的内存占用与性能瓶颈问题,并提供了健壮的代码实现方案。

weixin_29313547的博客 341

AE-扭曲-变形-弧

一些AE效果的着色器实现记录

What_can_you_do的博客 1175

微服务面试题,微服务这样说,想不通过都难

独立部署:确保每个服务能够独立部署和更新,不影响其他服务。8、使用微服务架构时可能面临的挑战包括:- 服务拆分和组合:如何拆分服务和组合服务是一个需要认真考虑的问题。- SOA架构的服务通常是大粒度的,微服务架构的服务通常是小粒度的。其中,单元测试主要用于测试单个服务的功能,集成测试主要用于测试多个服务之间的通信和协作,端到端测试主要用于测试整个系统的功能,性能测试主要用于测试系统的性能和扩展性。6、微服务架构的优缺点如下:- 优点:易于扩展和部署、易于维护、更高的可靠性和可用性、更灵活的技术栈。

qwert 543

【图像超分】论文精读:Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR和MDSR)

最近对超分辨率的研究随着深度卷积神经网络 (DCNN) 的发展取得了进展。特别是,残差学习技术表现出更好的性能。在本文中,我们开发了一个增强的深度超分辨率网络(EDSR),其性能超过了当前最先进的 SR 方法。我们模型的显着性能改进是由于通过删除传统残差网络中不必要的模块进行优化。当我们稳定训练过程时,通过扩展模型大小可以进一步提高性能。我们还提出了一种新的多尺度深度超分辨率系统(MDSR)和训练方法,该方法可以在单个模型中重建不同缩放因子的高分辨率图像。所提出的方法在基准数据集上比最先进的方法表现出更好的

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 7925

面试官,别再问高并发了!

随着 5G、云时代的来临,架构设计能力越来越已经成为开发工程师进阶必备条件。如何快速消化异常与突发流量已成为优质粘性服务的主要关注点。比如,面试后端开发岗位时,面试官不仅考察基础能力,更...

程序猿DD 970

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

当面试官说 “你还有什么问题想问的”,你该如何回答?

阅读本文大概需要 4 分钟。 作者:黄小斜 程序员面试时经常会听到面试官说一些套话,比如“今天的面试就到这里了,回去等通知吧”,“你还有什么问题想问我的吗”,“如果这道题不会做,那么我们也可以换一道” 今天我们要说的是大多数面试官都会说的一句话“你还有什么问题想问的?” 这是一个老生常谈的问题,之前经历过不少面试,针对这个问题我也做过很多不同的回答,当然也参考了其他人的一些建议,我这里总结了几种...

程序员书单 6271

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

面试官问“你了解虚拟机吗?“,他想考察的5大核心技术点

上周参加Java岗终面时,面试官第一句话就是:"先聊聊你对JVM的理解吧"。当时我心头一紧——这个问题看似开放,实则暗藏玄机。

🚩 Flag:今年绝不写屎山代码(去年也是这么说的) 984

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

面试官最爱问的Java微服务项目实战:从架构设计到部署上线全流程

老吴:最后给你整理10个面试官必问的问题和标准答案,你直接记下来,面试时绝对能用得上!问:微服务架构的优缺点是什么?答:优点:独立部署、独立扩容、技术栈灵活、容错性高;缺点:服务拆分复杂、分布式事务难解决、服务调用链路长、运维成本高。问:如何解决微服务的服务雪崩问题?答:1. 服务容错(Sentinel/Hystrix)熔断降级;2. 限流(Gateway/Sentinel);3. 服务隔离(线程池隔离/信号量隔离);4. 缓存兜底。问:Nacos的AP和CP模式有什么区别?答。

2601_94871597的博客 1305

Java面试模拟:谢飞机与大厂面试官的爆笑对决(Spring Boot、微服务、Redis、Kafka)

Spring Boot 自动装配原理:通过注解加载中的自动配置类,结合条件注解等判断是否启用配置。自定义 Starter:包含模块(配置类和属性类)和starter模块(引入依赖),通过规范命名。Spring Boot 与 Spring Cloud:Spring Boot 是快速构建应用的框架,Spring Cloud 是基于 Spring Boot 的微服务解决方案,提供服务注册发现、配置中心、网关、熔断等能力。Redis 缓存优化。

xbr95的博客 1628

面试官问我网络协议,我该怎么办?

十个人程序员里面,有十个都会说自己学过网络协议,九个人都会说自己懂网络协议。但是面试的时候,问几个问题,能回答的可能只有两三个。不信?来,我问你几道。1、TCP 协议跟 UDP 协议有什么...

weixin_44747933的博客 365

面试官当面夸奖了我,反手却把我挂了,这是什么套路?

最近几个朋友找我聊天,给我讲述了面试过程中遇到的一些不太理解的事情。我有个朋友作为一个技术面试官,今天来分享 10 个面试相关的套路。

技术专家 274

今天去 OPPO 面试,被问麻了。。。

前言 最近有位读者去面试了oppo,给大家整理了面试真题的答案。希望对大家有帮助哈,一起学习,一起进步。聊聊你印象最深刻的项目,或者做了什么优化。你项目提到分布式锁,你们是怎么使用分布式锁的?常见分布式事务解决方案你们的接口幂等是如何保证的?你们的MySQL架构是怎样的?常见的索引结构有?哈希表结构属于哪种场景?给你ab,ac,abc字段,你是如何加索引的?数据库隔离级别...

Java知音 609

当面试官问你这个问题的时候,他想听到什么?

这期我想简单的聊一个面试中出现频率比较高的,但又没有标准答案的面试题。 你在工作中遇到过印象深刻的困难是什么,你怎么克服的? 为什么我想聊聊这个问题呢? 因为我发现这个问题经常出现在各个技术交流群中,大家聊到这个话题的时候大多都苦不堪言,纷纷表示不知道怎么去回答这个问题。 或者说之前就没有想过这样的问题,突然一下被问起来,由于没有准备,也是摸不着头脑的样子。 匆匆的回顾一下自己的职业生涯,发现天天写的都是 crud,也没觉得有什么困难啊。 一时间,竟然想脱口而出:我觉得吧,也没有啥特别大的困难,

q66562636的博客 417
上一篇: Spring Cloud Kubernetes之实战一配置管理
下一篇: 面试被问finally 和 return,到底谁先执行?
交个朋友之猿田地
博客等级 码龄15年 15粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值