静儿最近做面试官做的比较多,说说咱们这些站在巨人肩膀上的后起之秀应该具有的基本观念。
首先,CRUD(增删改查)工程师是很难找到好工作的。如果你介绍一个人的时候,说这个人不错,踏实靠谱,推荐去某某大厂吧。这句话暴露了自己的格局。大厂第一看能力。
先说说CRUD工程师。面试发现是这种情况,挺尴尬的。如果面试时发现总是在切换内容没有体系,一般有两个原因:要不面试官挫,要不面试者挫。
某某说我一个做业务的,天天就是CRUD啊,没啥好说的。额,听我说说看。
比如:大家经常开玩笑举例子,说做的业务比较挫,就命名为XXX管理系统。先说说XXX管理系统。
WHAT
就算我们只是简单的执行者。执行力要看what why how。先看看what。
上图展示了首先要梳理的一些事情。即:处于什么领域?这个领域都有哪些显性需求和隐性需求?举个例子,隐性需求里看起来很简单的,但是基本每个业务都要考虑的安全规约。像金融业务涉及合规什么一清、二清,独立物理部署我们就不提了,就说说每个项目都要用的。
数据脱敏是信息安全中心根据《中华人民共和国网络安全法》和公司敏感数据安全管理要求,开展的一项针对数据仓库、应用系统等层面的公司敏感数据的脱敏管理工作。技术问题来了,怎么实现的?这就和面试官有的聊了。
再说说RBAC(基于角色的权限控制),A是普通用户,B是管理员。权限有高低之分,这就属于垂直权限要解决的问题。A、B两个都是普通用户,但是他们都只能看到自己的信息,不能看到别人的,这就是水平权限要解决的问题。技术话题打开序幕……
WHY
假如我们给老板提交了一个项目计划,里面列出了什么时间做什么事情。老板看着这些东西多半不是第一个关心的,第一关心的是:做这些有哪些收益?
why的问题真正决定了这个项目的架构。举个例子来说,静儿是做容器的,用k8s,k8s的架构大体如下:
看不懂没关系,不是重点。重点从工程上来说,它的核心思想和XX管理系统是差不多的。
k8s有一个暴露的api层,做的就是CRUD,etcd是存储,剩下的就是它的核心职能:容器管理和策略。
XX管理系统是不是差不多?有一个暴露的api层,做的就是CRUD,下面是存储层,然后是核心职能。
管理系统是偏业务的。八大数据分析模型(留存分析、行为事件分析、漏斗分析、点击分析、用户路径分析、用户分群分析、分布分析、属性分析)是基础。为了获取收益该做的埋点都埋了吗?该展示的报表展示了吗?该做的统计分析做了吗?
HOW
各部分都怎么做,太多了,不一一细说。最简单的设计要遵循的一些原则和自己从实践中总结的规律。列几个最简单的,能做好也挺不容易。
面向对象的三大基本特性
三大特性:封装、继承、多态
封装:将客观事物封装成类
继承:让某个类型的对象获得另一个类型的对象的属性和方法
多态:指一个类实例的相同方法在不同情形有不同表现形式
面向对象的五大基本原则(SOLID原则)
单一职责原则SRP(Single Responsibility Principle):是指一个类的功能要单一,不能包罗万象。
开放封闭原则OCP(Open-Close Principle):一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。
里氏替换原则(Liskov Substitution Principle LSP):子类应当可以替换父类并出现在父类能够出现的任何地方。
接口分离原则(the Interface Segregation Principle ISP):模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来。
依赖倒置原则(Dependency Inversion Principle DIP):传统的结构化编程中,最上层的模块通常都要依赖下面的子模块来实现,也称为高层依赖低层。DIP就是不要直接依赖具体类,可以定义一个接口,依赖接口。
设计模式的六大原则
开闭原则(Open Close Principle):对扩展开放,对修改关闭。
里氏代换原则(Liskov Substitution Principle):任何基类可以出现的地方,子类一定可以出现。
依赖倒转原则(Dependence Inversion Principle):针对接口编程,依赖于抽象而不依赖于具体。
接口隔离原则(Interface Segregation Principle):使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。
迪米特法则,又称最少知道原则(Demeter Principle):一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
合成复用原则(Composite Reuse Principle):尽量使用合成/聚合的方式,而不是使用继承。
其它原则
1.KISS原则
KISS(keep it simple, stupid):简历即正义
2.业务内聚,访问通道隔离
对于管理系统来说,权限管理是门艺术,能搞定ABAC(Attribute Based Access Control)和RBAC(Role based Access Control)也能达到相当的高度。