1. 程式人生 > >面試官視角看面試

面試官視角看面試

歡迎工作一到八年的Java工程師朋友們加入Java高階交流群:854630135

本群提供免費的學習指導 架構資料 以及免費的解答

不懂得問題都可以在本群提出來 之後還會有直播平臺和講師直接交流噢
 

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