zoukankan      html  css  js  c++  java
  • 面试官视角看面试

     [学习笔记]转载

    静儿最近做面试官做的比较多,说说咱们这些站在巨人肩膀上的后起之秀应该具有的基本观念。

        首先,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)也能达到相当的高度。

    版权保护:本文为转载文章,原文地址:https://www.cnblogs.com/xiexj/p/10018759.html

  • 相关阅读:
    C++中static_cast, dynamic_cast使用方法
    JavaScript中的Boolean 方法与Number方法
    參数预计:最大似然预计、贝叶斯预计与最大后验预计
    漫谈程序控制流
    怎样使用 RMAN 增量备份恢复 data guard log gap(日志断档)
    Unity3d修炼之路:GUIbutton简单使用,完毕对一个简单对象Cube的移动,旋转
    Python写自己主动化之邮件发送(匿名)
    LintCode
    缓存之 ACache
    Android Studio:Multiple dex files define Landroid/support/annotation/AnimRes
  • 原文地址:https://www.cnblogs.com/haima1949/p/10767011.html
Copyright © 2011-2022 走看看