首页 > 其他分享 >常见场景问题、面试问题,解决思路指南

常见场景问题、面试问题,解决思路指南

时间:2023-05-26 11:12:11浏览次数:74  
标签:指南 场景 考勤 面试 token 缓存 打卡 表单 数据

如何避免订单或表单重复提交?

这个用术语来讲,是保证用户操作的幂等性。有以下思路:

  1. 前端对按钮点击事件做好处理,避免短时间内可以点击两次,且都能成功调用后端服务接口。比如对按钮设置状态,在后端接口正常响应前再次点击无效或禁用按钮。
  2. 后端接口执行逻辑前,先查询,判断之前未做相关处理。即插入数据前先查一下数据是否已存在,更新数据前比如判断下行的版本号(每次更新后版本号不一样,需自己维护),避免重复操作。不太推荐。
  3. 缓存表单token。即每个表单提交前,前端先从服务端接口获取一个token,作为表单隐藏字段或header提交时带上。服务端生成并保存该token,在接收到操作请求后,先验证该token是否在缓存中存在,存在则为首次提交操作,操作成功后,服务端删除该表单token;若不存在,则考虑请求伪造或重复提交。推荐,这个是缓存可以借助session或redis。

如何保证数据(比如某商品库存)并发更新的安全性?

比如商品库存,下单成功后会减少,在并发下单时,保证依次递减,不出现一些数据异常比如销售量高于实际库存的情况?

方案1:借用c#中的 lock 语句

非集群的系统,可以借用c#中的 lock 语句 ,基于Monitor。它将会锁住代码块的内容,并阻止其他线程进入该代码块,直到该代码块运行完成,释放该锁。这在非分布式系统中,可以很好的解决线程安全问题,具体如何使用请自行百度。

锁这个用处,可以想象动车里的卫生间,有人进去后门就立马锁上了,别人进不去,想进去得等待。等上一个人进去办完事儿出来了,卫生间门的锁开了,下一个人才可以进去。

方案2:借用Redis的setnx(key,value) 命令

参考:c# 多线程编程、线程安全 - AI大胜 - 博客园 (cnblogs.com) 最下面一节。

10万人同时在1000台设备考勤打卡如何设计程序架构和考勤数据流转?

工人通过前端人脸识别设备进行考勤,考勤数据最终存储到远程数据库。假设有 1000 台人脸设备,10万人同时考勤。请描述该场景下你会如何设计程序架构和考勤数据流转?

来自:一次面试时的笔试题。

接口访问的并发量最多1000,不用考虑高并发和集群,一个web站点就OK了。
每次打卡一条数据,也就每天30w-60w,最多不超过100w的数据量。所有数据存取是重点。

方案一:内存缓存+后台定时任务将数据批量插入SQL数据库。

每次个人打卡,将记录存放到内存缓存中,用并发集合存放打卡记录信息。最好每个设备一个key一个集合。写个后台任务在固定的时间点,往数据库批量插入一次记录,同时从缓存中剔除。
数据库没只保存近两个月的大卡记录,之前的记录归档到月打卡记录统计,并只详细记录异常打卡情况,比如迟到的。


持续更新……


更新于:2023.5.26

标签:指南,场景,考勤,面试,token,缓存,打卡,表单,数据
From: https://www.cnblogs.com/idasheng/p/17434197.html

相关文章

  • 面试中被问到CAS机制该怎么回答
    一个小例子说说什么是线程安全并发是Java编程的基础,在我们日常的工作中,很多时候都会跟并发打交道,当然,这也是面试考察的重点。在并发编程中,被提起最多的概念是线程安全,下面我们先来看一段代码,看看运行后会发生什么:publicclassTest{privatestaticintinc=0;public......
  • 面试官问你:知道什么是ABA问题吗?
    大家好啊,我是你们的老朋友青戈,我又来分享干货啦......
  • MobPush iOS端合规指南
    2021年5月1日起,由国家互联网信息办公室、工业和信息化部、公安部、国家市场监督管理总局联合制定了《常见类型移动互联网应用程序必要个人信息范围规定》(简称“App必要个人信息范围规定”)已正式施行。“App必要个人信息范围规定”不仅明确常见39种类型的App必要个人信息范围,而且明......
  • kubenetes 面试题汇总1
    什么是Kubernetes?答:Kubernetes是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它提供了一种简单而有效的方式来管理大规模的容器化应用程序,并且可以在不同的基础设施上运行,包括公共云、私有云和混合云。Kubernetes中的Pod是什么?它有什么作用?答:Pod是Kubernetes......
  • #yyds干货盘点# LeetCode程序员面试金典:路径总和 II
    题目:给你二叉树的根节点root和一个整数目标和targetSum,找出所有从根节点到叶子节点路径总和等于给定目标和的路径。叶子节点是指没有子节点的节点。 示例1:输入:root=[5,4,8,11,null,13,4,7,2,null,null,5,1],targetSum=22输出:[[5,4,11,2],[5,8,4,5]]示例2:输入:root=......
  • #yyds干货盘点# LeetCode程序员面试金典:多数元素
    1.描述:给定一个大小为n的数组 nums,返回其中的多数元素。多数元素是指在数组中出现次数大于 ⌊n/2⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1:输入:nums=[3,2,3]输出:3示例 2:输入:nums=[2,2,1,1,1,2,2]输出:22.代码实现:classSolution{......
  • 良好的面试体验多来一点!
    本文首发自公粽hao「林行学长」,欢迎来撩,免费领取20个求职工具资源包。了解校招、分享校招知识的学长来了!今天学长在冲浪的时候,发现了大家都觉得暖心的新闻:面试后收到20元车马费。虽然钱不多,但比那些让人大老远跑去的萝卜坑有心多了。今天学长和大家聊聊一场大家都觉得舒心的面试......
  • STM32 HAL开发完全指南
    关于STM32IAP升级之为什么APP执行要&0x2FFE0000这个数值的原因嵌入式软件开发​CarrollUniversity工商管理硕士 10人赞同了该文章如下图所示,这是我目前用的一款CPU:STM32F446RET6,大小是512KB我的bootloader编译完以后占用了26KB的FLASH内存。......
  • 淘宝天猫京东1688拼多多商品详情API接口(商品价格监控,商品上传等场景)代码对接
    抓取淘宝商品详情价格接口代码封装如下:请求方式:HTTPS POSTGET公共参数名称类型必须描述key String 是 调用key(必须以GET方式拼接在URL中)API接口 API接口secret String 是 调用密钥api_name String 是 API接口名称(包括在请求地址中)[item_search,item_get,item_search_......
  • express开发api指南--服务器发布
    8.1Linux服务器linux服务器相对简单。一般都自带node环境。没有的话apt-get或者yum安装一下。//查看node版本node-v//把文件除了node-modules文件夹都上传到服务器//以放在opt/express为例cd/opt/expressnpminstall//使用pm2包npminstall-gpm2//在项目文件夹下执......