系统架构面试题(6)高并发设计
关系型数据库如MySQL的单机并发能力很弱,高并发下表字段的加减操作,可能出现幻读。电商的秒杀活动典型的高并发减库存场景,这类问题有三种优化性能的思路:1. 异步处理减库存,而不是同步。2. 在内存中操作减库存。3. 分布式处理,分摊压力。
关系型数据库如MySQL的单机并发能力很弱,高并发下表字段的加减操作,可能出现幻读。电商的秒杀活动典型的高并发减库存场景,这类问题有三种优化性能的思路:1. 异步处理减库存,而不是同步。2. 在内存中操作减库存。3. 分布式处理,分摊压力。
过程化编程是将带解决问题的解决方案抽象为一系列概念化的步骤。通过编程的方法将这些步骤转化成程序指令集(算法),而这些指令按照一定的顺序排列,用来说明如何执行一个任务或解决一个问题。程序员必须要知道程序要完成什么,并且告诉计算机如何进行所需的计算工作,包括每个细节操作。
当单服务器的性能无法满足业务需求时,就需要把多台服务器组成集群系统提高整体的处理性能。我们要使用统一的流量入口来对外提供服务,本质上就是需要一个流量调度器,通过均衡的算法,将用户请求流量均衡地分发到集群中不同的服务器上
Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll、kqueue、eventport最为网络I/O模型,在高连接并发的情况下,能够支持高达5万个并发连接数的响应,而内存、CPU等系统资源消耗却非常低,运行非常稳定。Redis是一款开源的内存数据结构存储,用作数据库、分布式缓存、消息中间件,支持多种数据结构。Redis内置了主从复制、事务以及不同级别的持久化功能,并通过Sentinel和自动分区的Cluster提供了高可用性。
谈谈架构师的职责;以前的研发流程是怎么样的?如果你来设计研发流程,能否提高效率和质量;系统设计文档包括哪些内容。
每天存储一亿条数据记录,数据库怎么设计;在分布式系统中的数据库设计,要注意哪些方面;常见的数据库调优策略有哪些。
面向对象优点和缺点有哪些,哪些场合不适合面向对象?软件设计领域有哪些设计模式?你常用哪几种设计模式,适应哪些场景,优缺点是什么?公司级应用有哪些特别要求?怎么进行子系统划分?你如何看待服务化,什么样的业务需要做服务化?
我们总以为学习一定会有收获,其实方法不当,既让人身心疲惫,也没有切实的回报。不少人每天都看技术文章,第二天就忘干净了。面试官问技术方案,明明心里清楚,口述出来却前言不搭后语。面试官再问底层算法,你说看过但是忘记了。他不在乎你看没看过,答不上就是零分。正如男女相亲,平时男方挺能说,关键时候却支支吾吾,姑娘必然认为他不行。学到的东西,无法说出来让他人理解,本质是没有真正的弄懂。高效学习的诀窍是:把自己当成一台计算机,既有输入,也要有输出,用输出倒逼输入。
我已经工作十多年,从事过多年的业务研发和技术管理工作,也有过短暂的创业经历。由于工作需要,我曾经阅读过上千份简历,面试过上百个求职者,在程序员求职招聘领域积累了丰富的经验。本专栏融入了真实面试经验和技巧,譬如怎样写简历、谈项目经验、谈薪资等等。
说说你最熟悉的设计模式;单例模式有什么用处;Spring框架用到了哪些设计模式;你怎么选择合适的设计模式;设计模式的原则有哪些