反省在北京某S2B2C电商小型公司面试时掉链子的问题
昨天,参与北京一家公司面试时,不知道为什么,错了很多题,这些题在该家公司之前已经被问很多次了,当天精神恍惚的没答上来或答错,被问到数据库优化和乐观锁的问题,首先我谈到了存储引擎底层的数据结构
B树/B+树:
B树是红黑树的变种数据结构,红黑树是一种自平衡二叉查找树,有其 左右子树 按序排列的特点,左小右大的特点,红黑树我没有做过深入的研究,只是背住了特点,等过去这段时间好好研究一下
关于B树与B+树请查看园友的详细总结:https://www.cnblogs.com/George1994/p/7008732.html
谈到数据库优化,首先会想到索引,而数据库索引则用到了B树数据结构,因B树数据结构存在关键字,所以在全键名匹配方面,访问速度会非常快,但索引若使用不当也会造成数据库性能的损失。
mysql数据库:
myisam:采用锁表策略,不适用在高并发场景,由于内部采用B树数据结构,所以匹配搜索非常快
innodb:采用行锁策略,适合用在高并发场景,多线程竞争时,只锁定竞争那一行数据
1、面试官提问:在程序代码方面什么情况下会使索引失效?
其实这题我之前已经回答过很多次了,可能面试官提问的逻辑跟之前不太一样,我没有听明白,这题没答上来,其实在写sql时我们需要注意:
在使用innodb存储引擎时OR与索引不可同时存在,否则索引失去效果,会进行全表扫描
具体可以看这篇文章:http://www.cnblogs.com/yuerdongni/p/4255395.html
另外使用 like 也会造成全表扫描
2、面试官提问:在基于你博客中的高并发乐观锁方案上,如果发生网络堵塞导致最终version不一致怎么办?
这道题我一开始回答的是从流量控制方面避免这种事情发生,后来想了想,我当时没能理解他的问题,现在也没怎么理解
实现乐观锁即CAS原理,假设下单减库存场景,先获取版本号,然后走业务逻辑,最终提交时比对一下版本号是否一致,他是不是说的这个时候网络阻塞,如果这个地方没能成功的从数据库取出版本号,只要不设置默认值,应该会抛出连接异常,在上游拦截处理美化之后提醒用户下单失败。
3、面试官提问:抢红包时如果因为用户并发量过大,出现了数据不一致怎么办
这个问题我可能回答的答案他并不满意,在我之前做的几种方案中已经解决了这个问题,如果真的要说百万级,这个流量非常恐怖,我当时提到了使用消息队列来削峰,延时处理,用户操作之后不会立即返回结果,只是告诉用户参与成功,用户可以到个人中心看进度,等消息队列消费之后更改状态,不过看面试官反应应该回答的不是他想要的,这个希望园友帮我出出主意
另外因为学历问题最近几天确实很郁闷,回忆起这家公司的笔试题,我错了两三道,还都是我之前答过的,也有一些的确我没有关注到的知识点,加油吧,希望这个城市能给我一些机会。
反省在北京某S2B2C电商小型公司面试时掉链子的问题的更多相关文章
- 电商系统中SPU、SKU的区别
SPU = Standard Product Unit(标准产品单位) SPU是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该集合描述了一个产品的特性.SPU多见于后台商品的管理. ...
- 基于K-means Clustering聚类算法对电商商户进行级别划分(含Octave仿真)
在从事电商做频道运营时,每到关键时间节点,大促前,季度末等等,我们要做的一件事情就是品牌池打分,更新所有店铺的等级.例如,所以的商户分入SKA,KA,普通店铺,新店铺这4个级别,对于不同级别的商户,会 ...
- 【系统设计】不同分类的商品动态添加扩展属性的方法(WMS、小型电商)
在做公司WMS系统的时候,遇到了一个商品模块的设计问题,具体业务流程如下. 客户提供需要存放的商品清单,根据商品清单生成收货单给客户,然后生成入库单进行商品入库操作. 在生成这两个单之前首先要录入商品 ...
- 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文
阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...
- 电商平台如何接入快递鸟电子面单API?
快递鸟是全球物流接口服务商,为电商 ERP.电商平台.仓储.清关公司提供物流跟踪.电子面单.智选物流.物流金融.在线下单等服务,解决电商的物流管理模块和金融模块.现就对快递鸟电子面单API做基本描述, ...
- java亿级流量电商详情页系统的大型高并发与高可用缓存架构实战视频教程
亿级流量电商详情页系统的大型高并发与高可用缓存架构实战 完整高清含源码,需要课程的联系QQ:2608609000 1[免费观看]课程介绍以及高并发高可用复杂系统中的缓存架构有哪些东西2[免费观看]基于 ...
- 【Tableau】电商广告投放的地域分析
分析师的职责是利用处理数据获取信息,提炼规律,帮助企业正确决策业务方向. 所以,一个好的分析师绝不能被数据所困,既要深入业务,理解业务,也要高瞻远瞩,以领导者的思维借助数据分析的辅助做出判断. [结构 ...
- Amazon电商数据分析——数据获取
最近一段时间主要重心在Amazon电商数据分析上,这是一个偏数据分析和可视化的项目.具体来说就是先获取Amazon的商品数据,数据清洗和持久化存储后作为我们自己的数据源.分析模块和可视化模块基于数据进 ...
- SAP CX Upscale Commerce : SAP全新推出的电商云平台
大家好,我是Andy Chen,是SAP成都研究院年轻的SAP CX Upscale Commerce (后面将会以Upscale简称)开发团队的一名产品经理.CX的全称是Customer Exper ...
随机推荐
- halcon-车牌识别
halcon代码: 1: read_image(Image,'D:/MyFile/halcon/车牌识别/图片.jpg') 2: decompose3(Image,ImageR,ImageG,Imag ...
- 详解Vue2.0生命周期
网上已经有很多关于vue生命周期的文章,我的这篇文章的由来,其实是我对官网上描述的一句话的思考与理解:“el被新创建的vm.$el替换”,所以文章更多的内容可能是在对vue生命周期中“created ...
- LInux命令执行http请求
Linux下提供了一些命令可以直接执行http请求,下面举例来介绍几个命令. http // GET请求 http http://127.0.0.1:2379/version http GET htt ...
- Android判断Service是否运行
/** * 用来判断服务是否运行. * @param context * @param className 判断的服务名字 * @ret ...
- MAXOS 进程管理
ps -ef|grep +程序名 注意进程名区分大小写 linux上进程有5种状态:1. 运行(正在运行或在运行队列中等待)2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)3. 不可中 ...
- cocoapods使用问题集锦(2017-04)
今天公司在公司新发的电脑上边安装cocoapod发现容易忘记的几个问题,感觉需要记录下来. 问题一:系统默认ruby镜像的卸载命令行 --> gem sources --remove h ...
- 十大基于Docker的开发工具
http://www.infoq.com/cn/news/2014/08/top-10-open-source-docker FlynnFlynn是一个使用Go语言编写的开源PaaS平台,Flynn使 ...
- 要生成在[min,max]之间的随机整数,
import java.util.Random; public class RandomTest { public static void main(String[] args) { int max= ...
- Python爬虫入门六之Cookie的使用
大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在 ...
- RTC实时时钟-备份区域BKP--原理讲解
RTC(Real Time Clock):实时时钟 BCD码:用4位2进制来表示10以内的十进制的形式. RTC的时钟源:LSE(32.768KHZ).HSE_RTC.LSI.经过一个精密校准(RTC ...