精华内容
下载资源
问答
  • 由于国内用户对电商购物的热衷,再加上这些年,商家推出的各种优惠补贴策略和高效快捷的物流,也让大家足不出门享受到了真正的实惠。但,对于一个java程序员来讲,我更关注的是系统架构层面,...

    由于国内用户对电商购物的热衷,再加上这些年,商家推出的各种优惠补贴策略和高效快捷的物流,也让大家足不出门享受到了真正的实惠。

     

    但,对于一个java 程序员来讲,我更关注的是系统架构层面,从原本的定时秒杀,到现在的各种活动预热、拼团、定金膨胀、百亿补贴、跨店满减、以及更复杂的组合优惠,让用户一时摸不到头脑,虽然扰乱了用户购买的节奏,但也一直保持着持续升温的状态。

     

    那么从技术层面来分析的话,这次优惠的复杂程度会造成原本就会有的集中式秒杀,变成了持续式高并发请求,这让我们的技术架构更为复杂,尤其是对后台系统而言,复杂的链路调用,更多缓存逻辑和业务叠加给程序员们增加了额外的挑战。

     

    当然像淘宝、京东、拼多多这种体量的用户群,在双十一之前早就做好了应对方案

     

    对于在做二三线电商的小伙伴或想要了解淘宝、京东内部架构的小伙伴,我总结了以下几点技术总结:

    技术总结:

    电商高并发系统架构,SpringCloud Alibaba是如何应对双十一

    • 抗住淘宝双十一的三大利器:Sentinel、Nacos、RocketMQ

    • Sentinel在淘宝双十一洪峰时限流底层实现原理

    • Alibaba Sentinel对比 Netflix Hystrix区别与优势

    • Nacos在淘宝中如何抗住百万服务注册发现与配置下发

    • RocketMQ在双十一秒杀时如何抗住亿级订单数据

    • RocketMQ对比其他中间件选型

    • Alibaba Sentinel、Nacos、RocketMQ常见高薪面试题

    • 实战微服务项目基于KVM虚拟化云原生运维

    • Apache Skywalking微服务链路追踪实战

    • Prometheus整合Grafana实现微服务监控大屏

    电商详情页项目实战

    • 从“0”开始,10分钟构建SpringCloud Alibaba项目

    • 单机、集群、微服务全链路压测实战

    • Nginx+mysql方案 

    • SpringBoot + Mysql 方案 

    • SpringBoot + redis 方案 

    • Nginx+静态缓存方案 

    • Nginx+Lua+ redis方案 

    • 分布式集群压测方案

    • SpringCloud+ Skywalking微服务全链路压测与监控预警

    • SpringCloud Alibaba Sentinel在淘宝双十一洪峰时限流底层实现原理

    • Prometheus整合Grafana实现微服务监控大屏

    配合这些技术总结,马士兵教育特意准备了一场如何应对电商模式下的【高并发微服务】直播训练营!!!

    内容很干,很多内容都是第一次分享,抓紧报名参与,名额仅限前100名!!!

    4h时间,带大家在真实高并发系统架构下,揭秘SpringCloud Alibaba如何应对双十一!

    直播时间:12月23日-12月24日

    如何免费参加:

    识别下方二维码,备注【微服务】

    连续2天学习打卡,即可免费领取一本马士兵老师的实体笔记!

    画外音:(三选一,包邮;文末还有彩蛋!!!)

    主讲老师:

    直播内容:

    1.高并发系统架构 - 理论与技术介绍

    目标

    对高并发项目有整体认识。了解分布式系统理论与落地技术选型依据

    内容

     

    东宝商城(仿淘宝)项目技术架构图

    高并发电商系统瓶颈分析

    秒杀系统多级“读、写”分离

    神一样的CAP定理以及BASE理论

    2.高并发系统架构 -高并发、高可用、高性能网关系统核心设计

    目标

    了解网关的分类、应用场景与落地技术选型

    内容

    什么是网关,网关的功能及在分布式系统中的角色

    流量网关:全局性流控、日志统计、防止 SQL 注入、防止 Web 攻击、屏蔽工具扫描、黑白名单控制

    业务网关:实现安全、验证、路由、过滤、流控、缓存、服务路由、业务聚合

    开源网关技术选型:Open Resty、Kong、Zuul/Zuul2、Spring Cloud Gateway

    利用java响应式Web提升网关的并发性能

    3.高并发系统架构-高并发下的会话管理方案对比

    目标

    什么是会话?会话管理的常见技术及框架

    内容

    Session与Cookies&Token 在高并发系统中存在的问题

    浏览器同源策略与跨域引发的安全问题

    SpringSession集群化Session共享引发的服务雪崩问题

    有状态会话与无状态会话Spring Security&Shiro&JWT技术选型与对比

    移动端和桌面端应用的OAuth2.0接入流程

    OpenID与OAuth2.0区别

    JWT中的header、playload、signature

    4.多级缓存- 系统缓存整体设计策略

    目标

    了解缓存层的意义和常见技术解决方案。

    内容

    电商项目架构方案对比与高并发瓶颈分析

    多源异构数据、服务数据闭环

    CDN、WAF流量清洗

    集群、单机限流策略

    nginx本地API动态网页内存数据缓存渲染直接输出方案

    redis多种集群模式优缺点对比、高性能优化、Linux内核优化、企业级数据恢复灾难演练、集群10万请求高压测试

    LFU、LRU、ARC、FIFO、MRU缓存清除算法

    Nginx proxy_cache lua_shared_dict ngx.shared lua-resty-lrucache ehcached进程内缓存,究竟怎么玩?

    基于布隆过滤器、分层架构缓存提高缓存命中率,缓存穿透终极解决方案

    5.多级缓存-亿级流量多级缓存架构解决方案

    目标

    如何进行多级缓存架构

    内容

    流量接入缓存层:HTTPDNS、Waf、全网CDN、硬防火墙、高性能网关、

    流量清洗、分发

    应用接入缓存层 :Nginx静态文件缓存、 Nginx动态数据缓存、 Lua-resty-lrucache、 URL定向缓存请求转发、 Kafka异步日志分析、单点登录系统

    应用缓存层:memcached、Redis Cluster集群、Redis 一致性哈希存储

    JVM:EHcache、SpringCloud

    数据持久层:Hbase、ELK、Mysql集群、shardingsphere、MyCat

    6.多级缓存-前端缓存

    目标

    学习前端相关知识

    内容

    浏览器缓存:ETag、Cache-Control、 Last-Modified 、Expires、from disk cache & from memory cache

    浏览器缓存原则

    移动端APP缓存:漂亮的加载过程、提前下发、兜底数据、临时缓存、固定缓存、父子连接、预加载、异步加载

    7.高并发系统架构-资源隔离

    目标

    了解进服务中的资源管理方案,避免互相影响、隔离故障,阻止传播,不会出现滚雪球和雪崩的效应

    内容

    线程隔离

    进程隔离

    集群隔离

    机房隔离

    读写隔离

    动静隔离

    爬虫隔离

    离异地多活

    Sentinel在淘宝双十一洪峰时限流底层实现原理

    Alibaba Sentinel对比 Netflix Hystrix区别与优势

    8.高并发系统架构-系统扩容

    学习目标

    了解服务资源在利用率比较高的情况下如何进行扩容

    学务内容

    硬件与云服务扩容

    服务水平扩容

    数据库扩容后引发的多库join问题与解决方案

    服务云原生:kvm技术架构的云服务平台和k8s的容器化服务架构

    9.高并发系统架构-服务降级

    目标

    当系统达到瓶颈的时候可以牺牲一部分功能依旧提供有损服务

    内容

    SLA 6个9的服务质量等级

    兜底数据

    限流降级

    超时降级

    降级开关

    数据组装降级

    读写降级

    前端降级、JS降级

    接入层、应用层降级

    片段降级

    静态化处理

    提前预埋

    10.应用层技术架构-SpringCloud全栈

    目标

    了解微服务SpringCloud Netflix/Alibaba、Dubbo技术栈

    内容

    Eureka 微服务注册与发现

    Actuator 微服务监控

    RestTemplate 服务器远程调用

    Ribbon 客户端的负载均衡

    OpenFeign 声明式服务调用

    Hystrix 微服务熔断、降级、资源隔离

    HystrixDashboard

    Zuul 微服务网关

    Config 微服务配置中心

    Sleuth zipkin 微服务链路追踪

    SpringCloud Alibaba Sentinel

    SpringCloud Alibaba Nacos

    SpringCloud Alibaba RocketMQ

    SpringCloud Alibaba Seata

    SpringCloud Netflix/Alibaba 全栈平面架构图

    Nacos在淘宝中如何抗住百万服务注册发现与配置下发

    SpringCloud Netflix/Alibaba新旧两代微服务架构技术该如何选型

    11.应用层技术架构-常用中间件服务核心解密与技术选型

    目标

    了解常用中间件在服务中的作用与选型

    内容

    分布式文件存储中间件

    分布式消息中间件

    分布式搜索中间件

    分布式缓存中间件

    高并发高性能接入层中间件

    大数据技术在微服务中的应用

    12.应用层技术架构-Spring Cloud Alibaba/Netflix微服务治理 改造

    目标

    了解微服务带来的新问题以及解决方案

    内容

    将 Netflix 技术栈 改造成 Alibaba技术栈

    什么是分布式事

    刚性事物和柔性事物

    XA两阶段提交方案TCC、LCN解决方案

    Alibaba Seata解决方案

    分布式锁的场景与解决方案

    多种方案生成分布式ID效率与安全对比

    Sentinel在淘宝双十一洪峰时限流底层实现原理

    Alibaba Sentinel对比 Netflix Hystrix区别与优势

    Nacos在淘宝中如何抗住百万服务注册发现与配置下发

    RocketMQ在双十一秒杀时如何抗住亿级订单数据

    RocketMQ对比其他中间件选型

    Alibaba Sentinel、Nacos、RocketMQ常见高薪面试题

    先领预习资料,老规矩啦!

    识别下方二维码,备注【微服务】


    预习资料:

    SpringCloud Alibaba淘宝微服务技术架构

    资料和笔记

    亿级流量高并发多级缓存架构理论

    笔记部分

    领预习资料,听直播不费劲!

    识别下方二维码,备注【微服务】

    展开全文
  • JAVA电商项目面试题(一)

    千次阅读 2018-02-25 16:25:25
    2、在使用依赖的最底层导入。 3、运行时所需要的依赖在web工程中加入。 人员配置 产品经理:3人,确定需求以及给出产品原型图 项目经理:1人,项目管理 前端团队:5人,根据产品经理给出的原型制作出静态页面 后端...

    需要按照功能点把系统拆分,拆分成独立的功能。单独为某一个节点添加服务器。需要系统之间配合才能完成整个业务逻辑。叫做分布式。
    集群:同一个工程部署到多台服务器上。
    优点:
    1、把模块拆分,使用接口通信,降低模块之间的耦合度。
    2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
    3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
    4、可以灵活的进行分布式部署。
    缺点:
    1、系统之间交互需要使用远程通信,接口开发增加工作量。
    2、各个模块有一些通用的业务逻辑无法共用。

    导入依赖的原则:
    1、所有的工程都需要的依赖应该在聚合工程(taotao-manage)中导入。
    2、在使用依赖的最底层导入。
    3、运行时所需要的依赖在web工程中加入。

    人员配置
    产品经理:3人,确定需求以及给出产品原型图
    项目经理:1人,项目管理
    前端团队:5人,根据产品经理给出的原型制作出静态页面
    后端团队:20人,实现产品功能
    测试团队:5人,测试所有的功能
    运维团队:3人,项目的发布以及维护

    开发周期
    采用迭×××发的方式进行,一般一次迭代的周期为一个月左右。

    #{}与${}的区别
    #{}:占位符,用于参数传递,可以防止SQL注入
    ${}:用于SQL拼接
    什么是负载均衡高可用
    nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重。
    为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供负载均衡服务;当备份管理器又从主管理器收到“I am alive”这样的信息时,它就释放服务IP地址,这样的主服务器就开始再次提供负载均衡服务。

    什么是FastDFS
    FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

    Redis优点
    1.支持多种数据类型存储
    2.支持持久化
    3.功能丰富
    4.简单稳定,基于c语言开发

    redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用,也可以将二者结合使用。
    1.RDB持久化(默认支持,无需配置)该机制是指在指定时间间隔内将内存中的数据集快照写入磁盘
    2.AOF持久化,该机制将以日志的形式记录服务器所处理的每一个写操作,在redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。

    转载于:https://blog.51cto.com/13517854/2072860

    展开全文
  • 底层,B+ 树的叶子节点区别)非聚簇索引查询的话会做几次查询?(一次)非聚簇索引存的是什么东西?(叶子节点存的是键值和数据所在物理地址) 一面总结:比较基础,面试相当友好,没有问奇奇怪怪的问题,太幸运了...

    一面

    正式批(别看了都是正式批,提前批就没让我面!)一面。面试时间 08-18,19:53 - 21:08,全程1个小时15分钟。涉及内容:项目、网络、数据库、算法题

    1. 自我介绍

    2. 项目中的有挑战的点(问了大概有五六个问题)

    3. 问了下本科啥专业的,学过哪些课程(主要是为了下面面试问题的内容,我说了操作系统和计算机网络学的时间久了,结果就挑着问hhh,佛了)

    4. 你知道 DNS 协议嘛?描述一下从输入域名到显示的过程(从 DNS 解析到 HTTP 链接建立到内容返回浏览器渲染)

    5. 你刚提到了递归查询和迭代查询,具体说一说什么样子的?(上面说到 DNS 获取域名对应的 ip 过程分为两个过程,即递归和迭代)

    6. 本地域名服务器向根服务器查询的是什么?(这边没答好,我说的是下一级的域名服务器的 IP 地址,经过引导理解了,是要从输入的域名检验跟服务器中对应的域名服务器的 IP 地址)

    7. TCP 的三次握手,详细描述一下,最好包括他的一些状态(说到了 SYN、ACK 以及确认序号和起始序号,但是面试官说第二次握手的时候不需要 SYN 的标志,但是书上是这么说的,让我再看看,我也不太好反驳。。。)

    8. DNS 用的 TCP 还是 UDP?为什么用 UDP?(就是 UDP 的好处,从握手效率、报文的长度来说)

    9. TCP 和 UDP 的各自的应用,举例子

    10. TCP 的四次挥手(仍然要说标志位和序号)

    11. 2 个 MSL 指的是什么?为什么要 2 个?(确保服务端收到,以及防止端口重用时网络中仍然有残余报文段导致错乱)MSL 指的是什么?(包生存时间)

    12. 学过数据库吗?ACID 是指什么?(事物的四大属性)隔离级别?解决的问题?(脏读、不可重复度、幻读)这三个现象解释一下?

    13. Mysql 默认的隔离级别是什么?在 Innodb 的可重复读的情况下可以解决幻读的情况吗?(我回答不能,其实应该是不能完全解决,可以一定程度的避免,可以从 next-key lock 的原理想)

    14. 知道聚簇索引和非聚簇索引吗?(底层,B+ 树的叶子节点区别)非聚簇索引查询的话会做几次查询?(一次)非聚簇索引存的是什么东西?(叶子节点存的是键值和数据所在物理地址)

    一面总结:比较基础,面试相当友好,没有问奇奇怪怪的问题,太幸运了

    二面

    正式批二面。面试时间 08-20, 14:00 - 14:45,全程45分钟。涉及内容:java 基础、锁、内存分配、算法

    1. 自我介绍

    2. Java 的继承介绍一下?多态指什么?(由于面试官没用过 java,所以只问了点基础的)

    3. 重载和重写?方法签名?

    4. 类的加载机制(加载、验证、准备、解析、初始化,每部分做了什么)

    5. Java 里面 Map 的类型(提了 HashMap、ConcurrentHashMap、LinkedHashMap、TreeMap)有什么区别?(提了最常说的两个 map 的区别)

    6. CAS 是什么呢?(前面 ConcurrentHashMap 提了)

    7. 什么是乐观锁什么是悲观锁?(CAS 里提了)

    8. 还有什么说么?(从乐观、悲观锁到读写锁到互斥锁共享锁到CLH锁MSC锁自旋锁偏向锁公平锁和非公平锁可重入锁,脑壳疼,这锁太多了一下子记不起来全部,数据库里面还有老多了)

    9. 线程间的同步方式?(共享变量、wait/notify、condition 的 await/signal、父子线程可以通过 InhritableThreadLocal、消息队列)

    10. 什么是死锁?怎么避免?(条件和破坏条件)

    11. 线程和进程有什么区别?

    12. Java 里面怎么分配内存?(讲了一下从栈到堆中的内存分配)

    13. 堆满是什么概念?(总算扯到垃圾回收了,从 minor gc -> full gc 到新生代和老年代的占比)

    14. 虚拟内存和物理内存有什么区别?空间置换?

    15. 写道题吧。接雨水

    16. 反问

    二面总结:本来以为是会问项目,没想到还是基础方面的。不过由于面试官不用 Java,所以一些问题他会深入问而不是看你明白就停了,所以得很了解才行。总的来说没出大问题,

    三面

    正式批三面。面试时间 08-20,15:00 - 15:30,全程30分钟。涉及内容:项目、网络、基础、个人规划

    1. 自我介绍

    2. 问了问项目

    3. 一致性哈希的均衡性?(前面项目里用到了一致性hash)虚拟节点是指什么?

    4. Mysql 的高可用方案?(讲了一下我们自己用的,以及一些市面上的方案)

    5. ELK 用来干什么?数据量大了怎么优化?

    6. http 协议各个版本的区别?演进的逻辑?

    7. TCP 的一些拥塞控制算法了解多少?

    8. 怎么确定数据包丢了?(冗余 ack)ACK 会不会丢掉呢?

    9. Java 的内存调优?

    10. 内存 gc?(到了最熟的部分,松了一口气)

    11. 对未来的一些工作有没有一些规划?从哪块入手?

    12. 反问

    三面总结:项目问了一些,基础也问了,总的感觉字节还是偏基础一点。

    hr面

    其实也不算 hr 面了,主要就是了解一下情况然后就发了意向书,中间审批过程比较长,等了很久生怕跪了。。。问题的话没什么好说的,基本就是意向地点,投了哪些公司和部门,现在手头上有什么 offer,有什么计划,毕业时间,哪里人等等。电话还没打完就发意向书过来了,感觉有点兴奋,但是强忍住不表现出来。。。

    最后

    每年转战互联网行业的人很多,说白了也是冲着高薪去的,不管你是即将步入这个行业还是想转行,学习是必不可少的。作为一个Java开发,学习成了日常生活的一部分,不学习你就会被这个行业淘汰,这也是这个行业残酷的现实。

    如果你对Java感兴趣,想要转行改变自己,那就要趁着机遇行动起来。或许,这份限量版的Java零基础宝典能够对你有所帮助。

    领取这份Java零基础宝典只需要点击这里即可免费下载

    取这份Java零基础宝典只需要点击这里即可免费下载

    [外链图片转存中…(img-OxjOKBl3-1626925724881)]

    展开全文
  • 层级混乱:底层写的是native容器,上层画了个api gateway。 答非所问:要求画业务大图,结果画了一堆前端脚手架的关键字,或者画成了流程图。 如果看到这里,不明白画图是干什么的同学,可以去查一下架构图是什么,...

    作者:磐冲

    https://segmentfault.com/a/1190000022795484

    你负责的业务是什么?(学会发现问题)

    之前在群里参加活动的同学,有不少说在小公司,被业务需求压着。既然大家都说在做业务,那么,正看到这里的你,能不能5分钟说明白,你负责的业务是什么?

    这个问题我在活动群的github issue活动中,带有业务理解标签的题目里经常会问到,可是大部分同学都没有说到位,甚至答非所问。

    这里谈谈我个人对业务的理解,或许没有普遍意义,所以仅供参考。

    业务最核心的要素是业务本身的价值

    一家公司,或者一个部门,做的事情有许许多多,零零散散。也有很多事情合到一起,促成了一件大事的时候。那么,我们是把那些零散的事情都看成业务?还是只把那一件大事看成业务呢?我认为都可以。决定权在于这件事是否逻辑自洽,以及是否具有独特的价值。

    接下来让我们拿着一个例子来说,假设你在开发一个营销活动页,这个页面能够给公司带来3000人的新用户,这些人有可能会购买公司的产品,从而带来收入。

    这里明显可以感受到,营销是一个业务线,他的商业逻辑是 投放页面 -> 拉新回流 -> 商品销售 ,价值在于新用户的触达,以及商品销售利益。基于这两点,我们就值得投入精力,因为做的越好,公司业绩越好。

    那么,做个页面就是亮点了?

    当然不是,但是亮点已经离我们很近了。如果你想要有亮点,那你需要保持思考。在上面的例子中,我们有许多可以优化和验证的事情。

    • 营销页每天换内容,怎么快速替换?

    • 营销部门人越来越多了,页面每天要10个,一个人怎么做得完?

    • 前端的人也越来越多了,改个组件不能只靠复制黏贴,怎么管理?

    • 拉新回流效率具体有多高?新人真的有买我们的商品吗?这么多人投入,都是要工资的,卖出去的商品能够发我们的工资吗?

    • 转化率低了,怎么才能提升?

    • 这个按钮写错个样式到了右边,居然点的人特别多?那下次是不是都应该放右边?

    上面列举的几个问题,估计很多同学日常都有做类似的事情。但问题是,这些事情是你想做的,还是产品让你做的?这些事情能诞生什么出来呢?

    • 运营配置后台与投放策略

    • 营销搭建体系

    • 工程化研发套件

    • 业务埋点与数据分析系统

    • 数据仓库与数据分析后台

    • A/B test系统

    至少在我看来,如果面试的同学上来自我介绍的时候,能够讲一下上面例子中遇到的问题,之后再说做了下面对应的某一个系统,那么,这就是绝对够分量的亮点。只可惜这样的同学少之又少,大部分同学是因为产品说要做就去做了。

    所以,你真的想过业务是什么吗?有为业务想过什么吗?有了你,业务有什么不同吗?

    可以开始写代码了?(学会思考的方式)

    好了,假设我们思考了一下,想了点东西出来,接下来我们可以开始写代码了.....吗?

    做一个有亮点的技术产出,可不是撸起袖子就能快速干出来的,当然,如果你是个天才,那请自便。如果和我一样是普通人,那么请先做好技术方案设计。而设计的第一步,就是做一个ppt工程师,画图。

    图,是思想的结晶

    在上面提到过的github issue活动里,大部分同学的业务大图或者技术架构图,都没法说明白先表达的意思。

    几个最典型的问题是:

    • 思路混乱:下面几个框在写业务的系统,上面画了一个vue或者webpack的框。

    • 层级混乱:底层写的是native容器,上层画了个api gateway。

    • 答非所问:要求画业务大图,结果画了一堆前端脚手架的关键字,或者画成了流程图。

    如果看到这里,不明白画图是干什么的同学,可以去查一下架构图是什么,以及如何做程序设计。这经常是被大家忽略的事情,虽然很多同学在大学里学习的时候,都学过相关的课程,但是估计大部分都还回去了。

    怎么画好一张图?

    这里不做具体的展开,毕竟我自己也不是画图高手,每次画图也是迟迟不知如何下笔。只给到几个建议,供大家参考。同时,以一个模拟面试同学的案例来做参考。

    原图:

    第一步,先想明白这张图要表达什么?

    这位同学说他参加过很多技术会议,看那些分享的ppt里面的大图,都很酷炫,自己平时也有总结(这点非常好),但是总画不出那种图来。面试过程中我问了这位同学,这张图他想表达什么,答案是他想说明白消息通信业务的技术方案。但是,这张图并不能表达出一个技术方案来。

    这张图第一个问题是不够完整,他只有一条主链路,对于IM这样的复杂技术产品,主链路只是冰山一角,如果真的只做了主链路,那么代表思考不够,早晚会出现线上故障。

    第二个问题在于含义不明与层次混乱。最下面的UI层有个箭头指向存储层,那是指渲染进程会去调用localStorage?那再向上2级的网关层呢?UI层会调用网关层?这里显然逻辑是不通顺的。

    第二步,图里的每一个大块必须是同一个领域或类似概念的,每一个框都有意义

    在这个问题上,这位同学做的还是很好的,但也还是有些小问题,比如UI层里的两个进程。这两个框显得意义不明,在没有描述的情况下,至少我是不明白他想表达的意思,而实际在沟通过程中,他也觉得这里挺奇怪的。

    第三步,画完回顾一下是否描述清楚了第一步里的核心逻辑

    很多时候我们一气呵成画了一张大图,结果一不小心容易画成一张流程图,把怎么写代码的思路也画到图上了。这就会导致图上有些地方是模块划分,而有些地方则是细节流程,整体就很失调。这只能通过反复的回顾和思考,进行自我调整了。

    最后,我给出当时模拟面试时,对于这个业务的粗略设想:

    知道原理有什么用?(技术如何赋能)

    有了大图,我们终于可以开始实现亮点了......吗?

    现实很残酷,哪怕我们想出了一个大饼,并不代表我们能吃到嘴里,从图变成面饼,我们需要太多的中间步骤。而摆在技术人面前的问题是:如果有面粉了,你会揉面吗?你揉面的技术能保证烤出来的饼好吃吗?

    知其然,而后使其然

    我认为这就是为什么我们要了解原理。曾经有一位模拟面试的同学,在最后互问互答的时候问了我一个问题,怎么看待面试造火箭,平时拧螺丝?我觉得有点冤枉,因为一面大部分问的都是怎么拧螺丝,以及螺丝的型号,二面开始也就问问怎么造飞机,但是真的进入工作状态,阿里的场景里,至少在我们团队的场景里,我们就是在造火箭,只是造火箭的时候必须要拧拧螺丝,没螺丝你敢上?

    有同学又不服了,我会拧螺丝,和我需要知道用什么螺丝有什么关系。那么上面那个烤饼,你能告诉我放白芝麻好吃还是放黑芝麻好吃吗?我相信大厨一定能回答上来,他甚至连小麦原产地都会和你掰扯一下。为什么到了同样需要匠心的编码领域,我们就不用关心用什么螺丝了呢?

    当时我给这个同学举了个实际的例子:简历中有提到上传,那你能不能当场告诉我,这个上传是服务端http接口配合你上传,还是用阿里云oss?用oss是服务端每次加签,还是用sts,还是前端直接加签?http上传你用什么contentType?用form表单组件提交还是自己通过xhr发送?如果需要登录鉴权怎么办?如果出现跨域问题怎么办?两种场景都有,都要实现,怎么封装组件?

    什么?你说你要百度一下?你要百度一天?那我为什么不聘用那个不用百度的人呢?一天的工资算上5金这些成本,月薪20k来算,估计也得有小2000了,如果我把这2000增加到一个懂原理的大神手里,我们岂不是双赢,为什么要等你去搜索呢?只是个简单的上传文件功能,也就是页面里的一个豆腐块,这么小的螺丝,里面却有大大的学问。而日常工作中我们遇到类似的问题有非常多,具体可以参考我上一篇文章的解读,这里就不重复了。

    任务的拆解

    对于平时愿意学习的同学,到这一步可能开始陷入迷茫了,我之前也遇到过类似的困惑,那就是:要不要造轮子

    我们经常会发现好像什么都能做,比如:你有的,我改改也能实现;社区有个差不多能用的,要不要直接用;好像大图上都有差不多的,那是不是拼拼凑凑就可以了,这个方案是不是没什么好做的了。

    从我个人来说,每次画图我都会陷入这样的思考,还常常会钻牛角尖,为了整点差异化,故意换一些思路去做,这样能保证这个饼是我的。但最后我都会绕出来,这得益于上面画图的第三步,每次画完我都会重新回顾一下我真正想做的事情是什么。我认为这也是是否造轮子的一个评判标准:从业务的价值出发,思考真正核心的目标,并且为之努力 ,如果有现成的轮子,能满足业务核心诉求,那就放手去用。

    首先,现实往往是这样的,当我们放手去用的时候,会发现这个轮子好像不那么好用,或者这个轮子没人维护了,又或者业务变化太快,轮子自己觉得顶不住了。机会自然会来到身边,而触发这些机会的,是我们不断的站在业务的视角去思考问题,业务的变化一定比一个平台化的轮子要来得快。

    其次,真正核心的系统一定是紧贴业务,而且很难大范围复用的,好的技术架构在设计的时候,讲究的是够用即可,过度设计大部分就是没用的设计。在之后的迭代中,会随着业务的不断变化,被带动着自我进化,那最终的产物也自然是和业务形态非常贴合。所以,我个人在选择的时候,一些核心的轮子,该造就造起来,但这些轮子一定是带有业务特色的,比如我会去造一个业务组件库,但是我绝不会去造一个antd。

    最后,随着事物的演变,分久必合合久必分,单一业务用的好的系统一定是可以在更高的视角上抽象、整合的,在整个过程中,每个人的成长就会是我们想要的亮点了。或许在简历上你写下的是一个已经废弃的系统,但是它的灵魂在你心里,也存在于把他整合了的系统里,这种亮点在个人介绍的时候,一定是能侃侃而谈的。

    从1到10能做什么?(思考方式的抽象)

    终于,我们经历的各种抉择,投入了大量的时间,把一个亮点做出来了,完成了美好的从0到1,可有时候我们会发现的问题:从0到1看上去有很多要做的,做完了,从1到10还能做什么?

    这个问题我个人也没有太多话语权,因为这两年总是在做从0到1的事情,甚至和我老板也聊过这个,总感觉自己没有个确定的事情。从0到1做一次挺爽的,一直做,不会一直爽,却只会让人觉得心慌,毕竟谁能保证永远能想出从0到1的事情呢?

    而静下来反思之后,我发现事情并不是这么一刀切的,谁能说明白现在做的事情是0到1,还是1到10呢?这里的边界其实并没有那么明确,但抽象看,他们都是同一个套路

    业务/技术思考 => 发现痛点 => 产出方案 => 拆解实现

    伴随着这个闭环,业务永远在变化,而变化又会带来新的问题,只要保持一个思考的状态,没有必要区分具体再哪个阶段,因为你总能找到可以实现自我价值的地方,发现属于你的亮点

    阅读更多

    被忽略的11个 JavaScript 小技巧

    前端都该懂的浏览器工作原理,你懂了吗?

    JSON.stringify妙用第二弹

    是时候开始用 CSS 自定义属性了

    公众号后台回复【前端】加入群

    如果文章对你有帮助,点个在看,谢谢!

    你的在看很重要~

    展开全文
  • 阿里Java面经大全(整合版)

    万次阅读 多人点赞 2018-08-03 16:10:12
    阿里巴巴,三面,java实习 昨天晚上11点打电话来,问我可以面试不,我说不可以,然后就约到了今天, 1.上来问我项目用的框架,然后问我springmvc里面有的参数的设定,问的是细节,然后问我如果传的多个值是一个...
  • 题 目: 基于Spark机器学习的电商推荐系统的设计与实现 这是我去年本科毕业时做的毕业设计论文,全文三万多字,知网查重对重复率1%,由于本科论文不会被发表到知网上,再加上我已毕业近一年,现在将论文发表到CSDN...
  • 伪造电商面试的坑

    2020-07-25 11:47:38
    相比之下,你可以看些底层的实现,或者画出基于分布式的框架图,这样,我的评语就会升级到“在项目里用过xx技术,而且了解底层,对xx技术有一定的了解”。 4、这点我在其它博文里也反复提到,由于重要,所以这里再...
  • 毕业设计电商网站源码 在线商城系统 简介 运行在Tomcat 7.0的网站工程,前台用了jsp、js、css等技术,后台用了Servlet作控制器调用java类来进行业务处理,MySQL后台数据库。 大学期末实训项目。 亮点 从高层架构至...
  • Java面试】第二章:P6级面试

    万次阅读 多人点赞 2021-03-23 18:50:51
    HashMap底层原理,扩容机制,jdk8以后会使用红黑树优化?红黑树和二叉平衡树的区别,红黑树和B树,B+树的区别,Mysql二大引擎索引底层实现,HashMap在多线程环境中为何出错?ConcurrentHashMap底层实现,CAS,原子...
  • 为了帮助大家了解后端面试八股文应该怎么背,特此推出面试八股文画重点系列(包含的内容有 Java 基础、JVM、MySQL、Redis、操作系统、计算机网络、设计模式)。希望能帮助到 Java 基础不是很好的同学能快速的准备好...
  • java面试突击

    千次阅读 2020-02-23 11:51:27
    另外,你要考虑你该如何才能让你的亮点在简历 中凸显出来,比如:你在某某项目做了什么事情解决了什么问题(只要有项目就一定有要解决的问题)、你的某一个 项目里使用了什么技术后整体性能和并发量提升了很多等等。...
  • 8年经验面试官详解 Java 面试秘诀

    千次阅读 2020-01-20 08:30:00
    作者 |胡书敏责编 | 刘静出品 | CSDN(ID:CSDNnews)本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有...
  • 介绍下自己最满意的,有技术亮点的项目或平台,重点介绍下自己负责那部分的技术细节;(主要对自己做过的事情是否有清晰的描述) 二、Java基础 什么是字符串常量池? String为什么是不可变的? String s = new ...
  • Java面试笔试题大汇总(最全+详细答案)

    万次阅读 多人点赞 2018-05-28 09:08:36
    本篇文章来自一位很资深的前辈对于最近java面试题目所做的总结归纳,有170道题目 ,知识面很广 ,而且这位前辈对于每个题都自己测试给出了答案 ,如果你对某个题有疑问或者不明白,可以电脑端登录把题目复制下来然后...
  • 这几年在Java工程师招聘时,会看到很多人的简历都写着使用了Spring Cloud做微服务实现,使用Docker做自动化部署,并且也会把这些做为自己的亮点。而比较有趣的这其中以小公司出来的人为绝大多数,大的公司出来的人...
  • 我做Java方面的面试官也有些年头了,从校招学生到初级开发到架构师我都面试过。从技术上来讲,候选人通过面试的标准可能千差万别,但归结成一句话,就是候选人达到了职位介绍的要求,且相关项目经验达到足量的年限。...
  • 对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术。然而,行业里很多朋友对缓存技术的了解与掌握,仅仅停留在掌握redis/memcached等缓存技术的基础使用...
  • 致那些迷茫的JAVA面试者(特别是南京的1-4年经验),致那些奋发的年轻人,致自己。写这篇文章主要也是对我的成长道路的记录,面试受挫后的反思,及对自己的勉励。 本人介绍:5年多经验的程序员,坐标南京。 背景...
  • 我的JAVA面试经验(3年左右工作经验)

    千次阅读 2019-04-16 08:23:36
    致那些迷茫的JAVA面试者(特别是南京的1-4年经验),致那些奋发的年轻人,致自己。写这篇博文主要也是对我的成长道路的记录,面试受挫后的反思,及对自己的勉励。 本人介绍:3年多经验的程序员,坐标南京。 背景:...
  • 2018年最新Java面试题及答案整理

    万次阅读 多人点赞 2018-05-09 10:40:33
    下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 基础篇 基本功 面向对象特征 封装,继承,多态和抽象 封装 封装给...
  • 集中式系统的最大的特点就是部署结构非常简单,底层一般采用从IBM、HP等厂商购买到的昂贵的大型主机。因此无需考虑如何对服务进行多节点的部署,也就不用考虑各节点之间的分布式协作问题。但是,由于采用单机部署。...
  • 课程基于真实的每日上亿流量的大型电商网站中的商品详情页系统,作为项目实战。详细讲解如何实现一个复杂的缓存系统架构,去直接支撑电商背景下的高并发与高性能的访问,同时基于缓存架构本身所处的复杂分布式系统...
  • 最近很多人问我,你们公司还缺人么,你们用哪些技术栈,有哪些是你们比较关注技术重点?...几乎每个JAVA后端开发程序员,都会在面试时碰到诸如如何性能调优的问题,如何回答好这个问题,不仅仅是考察对JVM,内...
  • 下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 基础篇 基本功 面向对象特征 封装,继承,多态和抽象 封装 封装给...
  • java知识点

    千次阅读 2018-12-30 10:44:56
    一.Corejava 【】 1.jdk ,jre,jvm的区别: jdk:Java 开发工具包(JRE+编译工具) jre:Java 运行时环境(JVM+类库) jvm:Java 虚拟机 2.环境变量的解释: 目的:在任意路径下能够直接执行相关命令。 原理:在命令行中...
  • Java面试问题总结归纳

    2019-08-12 17:18:14
    电商系统开发面试知识点 6 1.描述一下你的项目 6 2.描述一下你的系统架构 6 3.说一下dubbox的使用方法。 7 4.持久层框架为什么选择mybatis? 7 5.电商项目中会有很多图片需要保存,你们系统中是如何保存图片的? 7 6...
  • Java超强面试题

    2019-08-19 10:14:40
    Java程序员面试题集(1-50) 一、Java基础部分 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。...
  • java面试题

    2021-06-22 11:01:23
    什么是java虚拟机,详细介绍一下内存结构 GC垃圾回收机制算法 Jdk与jre的区别 接口与抽象类的区别 线程创建的4中方法,状态情况 Hashmap与hashtable区别,hashmap的实现原理 Map与set、list的区别 SSM...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 797
精华内容 318
关键字:

java电商的底层亮点

java 订阅