1 - Kiến trúc phần mềm - Architecture
1.1 n tier layer
1.2 event driven
1.3 Object oriented
1.4 Micro service
1.5 Plugin (extensions) Browser
2 - Design Pattern
2.1 Singleton Pattern
- Không dùng new để khởi tạo object, thay vào đó sẽ có 1 hàm dạng như static getInstance
- 1 lớp chỉ có 1 đối tượng
- Các object có cùng 1 state
2.2 Prototype Pattern
- Copy one object to another without creating new object
- Đối tượng ban đầu được gọi là prototype
2.3 Builder Pattern
https://laraveldaily.com/post/design-patterns-laravel-builder-example
- Dùng các setter để thay đổi value của property của 1 object
- Không cần khai báo new object với đầy đủ param ở constructor, khi cần chỉ cần dùng setter để set giá trị cho các param
2.4 Repository Pattern
3 - ORM là gì
- Object relation mapping
- 1 table = 1 object
- manage data in that table by object (ORM)
4 - agile engineering practices
4.1 Continuous Integration
4.2 Automated Unit Testing
4.3 Automated Acceptance Testing
4.4 TDD
5- security practices
6 - Khác nhau giữa PHP 7 và PHP 5
php 7 : nhanh hơn, dùng PHP-NG engine
php 7 : hỗ trợ strictly return type
php 7 : hỗ trợ 64 bit, và 64 bit integer
php 7 : có hỗ trợ Coalescing Operator ??
7 - Khác nhau giữa PHP 8 và PHP 7
php 8 : null safe operator
<?php
if( null !== $user ) {
if( null !== $user->profile ) {
echo $user->profile->getAvatar();
}
}
==> echo $user?->profile?->getAvater();
php8 : String Contains, String Starts With, and String Ends With
8 - CI CD Github & Jenkins
https://techmaster.vn/posts/35965/jenkins-tutorial-phan-2-tich-hop-jenkins-voi-github
9 - Principle in OOPSOLID
S : Single Responsibility -> Một class chỉ nên làm 1 nhiệm vụ duy nhất
O : Open Close : Open for extend, close for modification
L : Liskov
Object of child class should behave (operate) the same way with object of parent class
Bad example
public class Bird{
public void fly(){}
}
public class Duck extends Bird{}
public class Ostrich extends Bird{}// bad here, Ostrich can not fly
Good example
public class Bird{}
public class FlyingBirds extends Bird{
public void fly(){}
}
public class Duck extends FlyingBirds{}
public class Ostrich extends Bird{}
I : Interface Segregation : ko dùng 1 interface lớn với nhiều hàm bên trong, thay vào đó dùng nhiều interface nhỏ
D : Dependency inversion = dependency injection, tức là ko khởi tạo trực tiếp 1 class trong 1 constructor hay 1 hàm, thay vào đó truyền động từ param của hàm
10 - Các loại cache bạn sử dụng là gì
cache backend chủ yếu sử dụng redis, là memcache, cache trong RAM. Dữ liệu được lưu dưới dạng key=value
10.1 cache những data thuộc dạng cấu hình, settings, on off, nếu những data này không thay đổi thường xuyên
10.2 có thể cache API nếu những thông tin này không thay đổi thường xuyên, ví dụ tiêu đề, mô tả của sản phẩm.
Ví dụ có 1 api endpoint GET /product/1 là lấy các thông tin cơ bản của 1 product như title, description,... những thông tin này ko thay đổi thường xuyên, khi đó ta có thể build cache như sau
/product/1={"title":...., "description": "...."}
10.3 Khi nó đến cache phải chú ý thuật ngữ "invalidate cache", tức là dữ liệu sau bao lâu sẽ được làm mới lại
10.4 Việc lưu quá nhiều thông tin ở cache có thể sẽ dẫn đến out of memory, dẫn tới khi save(persist) cache, có thể bị lỗi và mất dữ liệu
11 - ACID priciple là gì
acid principle hay còn gọi là acid transaction, thường được áp dụng trong csdl.
1 transaction = 1 tiến trình gồm nhiều bước, yêu cầu các bước đó phải diễn ra thành công, nêu chỉ cần 1 bước(step) thất bại, thì hệ thống sẽ quay trở lại trạng thái ban đầu trước khi tiến trình đó diễn ra (rollback)
Ví dụ A có 1000, B có 500. A chuyển cho B 200, thì A còn 800 và B có 700
A = atomic : đảm bảo tài khoản của A và B đều được cập nhật đúng
C = consistent : việc chuyển tiền phải tuân theo những quy tắc (rules), ví dụ trước khi A chuyển 200 cho B, hệ thống phải kiểm tra xem A đủ tiền không ( số tiền của A phải > 200)
I = isolation : khi có nhiều request chạy đồng thời (concurent request), sau khi chạy xong, hệ thống đảm bảo đúng như trong trường hợp các request chạy tuần tự (consequent request)
D = durability : ví dụ sau khi chuyển tiền, hệ thống confirm chuyển tiền thành công, rồi bị mất điện. Lúc đó database vẫn cần lưu trữ đúng thông tin đã được cập nhật.
12- Laravel life cycle
public/index.php -> app/http/kernel --> service provider -> (register service, boostrap service) --> route --> middleware --> controller --> view --> response
Comments
Post a Comment