You are on page 1of 10

Introduction myself

Hello! My name is Nguyen Quoc Vu, and I would like to introduce myself as a Full-stack
developer. I have been a civil engineer for five years, and I created a Winform that connects the
APIs of construction software. Get information such as (coordinates, materials, and length of
elements) for construction engineers to check information and design drawings more
accurately than manually quickly. At Atman Company, I gained practical experience developing
web applications, creating efficient code, and working with databases. I grow in solving
complex problems and enjoy the logical thinking required in development. I also know front-
end development frameworks like HTML, CSS, and JavaScript libraries like Angular. Given a
chance, my technical expertise and a good mindset will enable me to make valuable
contributions to your company. Thank you for your listening.

Dạ chào anh, em xin tự giới thiệu bản thân! Em tên là Nguyễn Quốc Vũ. Em đã là kỹ sư xây
dựng được 5 năm và trong thời gian đó, em đã tạo Winform kết nối các API của phần mềm xây
dựng, lấy các thông tin như (tọa độ, vật liệu, chiều dài vật liệu xây dựng) để kỹ sư kiểm tra
thông tin và thiết kế bản vẽ chính xác hơn, nhanh hơn so với thủ công. Tại Công ty Atman, em
đã có được kinh nghiệm thực tế trong việc phát triển các ứng dụng web, tạo các thuật toán
hiệu quả và làm việc với các cơ sở dữ liệu, giải quyết các vấn đề phức tạp và vận dụng tư duy
logic cần thiết trong các dự án. Em phát triển front-end bằng cách sử dụng HTML, CSS và
JavaScript, Angular. Nếu có cơ hội, chuyên môn kỹ thuật và tư duy của mình sẽ giúp em có
những đóng góp có giá trị cho công ty anh.Cảm ơn anh đã lắng nghe.
Các project đã làm:
Trong thời gian em làm ở Atman, em từng tham gia 4 dự án như:
+ Posco là công ty chuyên sản xuất thép xây dựng. Sử dụng Netcore 3.1+ Angular 9, MySql
Database.Chủ yểu là training khách hàng
+ Orion là Công ty chuyên về bánh kẹo thực phẩm. Sử dụng Netcore 3.1+ Angular 9,MySql
Database
+ KMS Công ty chuyên gia công giày các nhãn hiệu Adidas, reebok. Sử dụng Java +
AngularJS, javascript, Oracle Database.Chủ yếu là maintain và testing
+ Pungkook là công ty sản xuất các sản phẩm túi xách như ba lô, túi dã ngoại, túi thể thao,
túi xách, hành lý. Sử dụng Netcore 3.1+ Angular 6, Oracle Database.

Tất cả dự án em đều làm việc nhóm, (Create, Read, Update, Delete). Đều quản lý source bằng
git.
Promise vs observable
Định Nghĩa
Promise và Observable giải quyết những vấn đề khác nhau trong việc xử lý tác vụ bất đồng bộ
và sự kiện trong JavaScript

Khi nào dùng nó, nó giải quyết vấn đề gì ?


Promise giải quyết những vấn đề sau:
Xử lý tác vụ bất đồng bộ: Promise cho phép bạn thực hiện các tác vụ bất đồng bộ và xử lý kết
quả của chúng. Bạn có thể tạo một Promise và đợi cho đến khi tác vụ hoàn thành để xử lý kết
quả thành công hoặc lỗi.
Chaining và xử lý lỗi: Promise cho phép bạn kết hợp các tác vụ bất đồng bộ thành chuỗi
(chaining) và xử lý lỗi trong từng bước. Bằng cách sử dụng phương thức .then() và .catch(), bạn
có thể thực hiện các tác vụ tuần tự và xử lý lỗi một cách linh hoạt.
Observable giải quyết những vấn đề sau:
Xử lý luồng dữ liệu: Observable để xử lý dữ liệu dưới dạng luồng (stream). Bạn có thể đăng ký
để theo dõi các giá trị hoặc sự kiện được phát ra từ Observable và xử lý chúng theo cách tương
ứng.
Xử lý dữ liệu không đồng bộ: Observable hỗ trợ xử lý các tác vụ không đồng bộ, chẳng hạn như
các sự kiện như click chuột, gửi yêu cầu HTTP, hoặc thay đổi trong cơ sở dữ liệu. Bạn có thể sử
dụng các phương thức như subscribe() và pipe() để đăng ký và xử lý các sự kiện hoặc giá trị
trong thời gian thực.
Tóm lại, Promise thích hợp cho các tác vụ bất đồng bộ đơn giản và xử lý tuần tự, trong khi
Observable phù hợp cho việc xử lý dữ liệu dưới dạng luồng và xử lý sự kiện trong thời gian
thực.

Ưu điểm và nhược điểm ?


Ưu điểm của Promise:
Dễ sử dụng: Promise có cú pháp đơn giản và dễ hiểu, giúp làm cho mã nguồn dễ đọc và dễ bảo
trì.
Hỗ trợ xử lý lỗi: Promise cung cấp phương thức .catch() để xử lý lỗi trong quá trình thực hiện
tác vụ bất đồng bộ.
Promise cho phép (chuỗi) các tác vụ bất đồng bộ liên tiếp nhau, giúp viết mã dễ dàng và rõ
ràng hơn.
Phổ biến: Promise được hỗ trợ rộng rãi trong JavaScript và được tích hợp sẵn trong các API
như Fetch và axios.

Nhược điểm của Promise:


Không hỗ trợ hủy tác vụ: Promise không cung cấp phương thức để hủy một tác vụ bất đồng bộ
đã được bắt đầu, điều này có thể làm tăng tải CPU và tiêu tốn tài nguyên hệ thống.
Không hỗ trợ xử lý dữ liệu liên tục: Promise chỉ hỗ trợ việc xử lý kết quả một lần duy nhất khi
tác vụ hoàn thành hoặc gặp lỗi, không thể xử lý dữ liệu liên tục theo thời gian.

Ưu điểm của Observable:


Xử lý luồng dữ liệu: Observable hỗ trợ xử lý dữ liệu dưới dạng luồng (stream), cho phép xử lý
dữ liệu liên tục và đồng thời.
Hủy tác vụ: Observable cung cấp phương thức unsubscribe() để hủy đăng ký theo dõi dữ liệu,
giúp tiết kiệm tài nguyên hệ thống khi không cần theo dõi nữa.
Phù hợp với Reactive Programming: Observable được thiết kế để làm việc trong mô hình
Reactive Programming, giúp xử lý sự kiện và tương tác với dữ liệu dễ dàng hơn.
Nhược điểm của Observable:
Phức tạp hơn: Observable có cú pháp và khái niệm phức tạp hơn so với Promise, đòi hỏi hiểu
biết sâu hơn và thời gian để làm quen với nó.
Hỗ trợ hạn chế: Mặc dù Observable được hỗ trợ trong các thư viện như RxJS, nhưng nó không
được tích hợp sẵn trong JavaScript, điều này có thể đòi hỏi bạn phải cài đặt thêm các thư viện
bổ sung.
let, var, constant,type of
Định Nghĩa:
Đầu tiên đây là 3 từ khoá chính để khai báo biến trong javascript
Phân Biệt:
let:
Biến được khai báo bằng từ khóa let có phạm vi hoạt động chỉ trong block nơi nó được khai
báo.
Không thể khai báo lại biến let trong cùng một block ( không được ghi đè lên)
Giá trị của biến let có thể được gán lại.
var:
Biến được khai báo bằng từ khóa var có phạm vi hoạt động trong phạm vi của hàm chứa nó
hoặc là biến toàn cục nếu nó được khai báo ngoài bất kỳ hàm nào.
Biến var có thể được sử dụng trước khi khai báo và giá trị của biến var có thể được gán lại
(được ghi đè lên)
Nếu khai báo biến var trong một block, thì biến đó vẫn sẽ có phạm vi hoạt động trong toàn bộ
hàm chứa block đó.
const:
Biến được khai báo bằng từ khóa const cũng có phạm vi hoạt động trong block như biến let.
Không thể khai báo lại biến const hoặc gán lại giá trị cho nó. Biến const được gán giá trị duy
nhất khi khai báo và giá trị này không thể thay đổi sau đó.
let và const hạn chế phạm vi hoạt động của biến trong block, nhưng let cho phép gán lại giá trị,
trong khi const không cho phép gán lại giá trị. var có phạm vi hoạt động rộng hơn và sử dụng
được trước khi khai báo.
Type of:
Toán tử typeof trong JavaScript được sử dụng để trả về kiểu dữ liệu của một biểu thức hoặc giá
trị cụ thể. Nó trả về một chuỗi biểu thị kiểu dữ liệu của đối tượng hoặc biến được kiểm tra.
Ví dụ, khi sử dụng toán tử typeof với các giá trị hoặc biểu thức, nó sẽ trả về các giá trị sau đây:
typeof 10; // "number"
typeof "Hello"; // "string"
apply các design pattern: reponsitory pattern, unit of work.
Reponsitory pattern là sao ?
là một pattern trong thiết kế phần mềm.
xài nó cho việc gì:
Cho code dễ quản lý, dễ quản lý, pattern dễ quản lý, dễ dùng.
THường có interface để dịnh nghĩa cho các chức năng (Create, Read, Update, Delete), các class
thực thi, kế thừa nó. giúp code gọn gàng, có tính kế thừa,
các menber khác khi dev dự án thì dễ dàng triển khai, dễ dàng maintain.
Có các instance sau: singleton, scope, transistance
Singleton:
Quản lý tài nguyên chung: Khi bạn muốn chia sẻ một tài nguyên duy nhất trong toàn bộ ứng
dụng, ví dụ như đối tượng cơ sở dữ liệu dbcontext, hệ thống cấu hình, hoặc đối tượng ghi log.
Cơ chế truy cập toàn cục: Khi bạn muốn truy cập đối tượng từ nhiều vị trí trong mã mà không
cần truyền đối tượng qua tham số.
Đảm bảo một phiên bản duy nhất: Khi chỉ có một phiên bản duy nhất của đối tượng được chấp
nhận và việc tạo lại đối tượng sẽ gây ra sự mất mát hoặc không nhất quán.
Scope:
Quản lý tài nguyên trong phạm vi: Khi bạn muốn đảm bảo rằng một đối tượng chỉ tồn tại và
được sử dụng trong một phạm vi nhất định, ví dụ như trong mỗi yêu cầu HTTP, phiên làm việc
người dùng hoặc vòng lặp xử lý dữ liệu.
Quản lý trạng thái: Khi bạn muốn theo dõi trạng thái của đối tượng trong một phạm vi cụ thể,
ví dụ như trạng thái giỏ hàng của người dùng trong phiên làm việc.
Transience:
Tác vụ tạm thời: Khi bạn cần tạo một đối tượng để thực hiện một tác vụ cụ thể trong một thời
gian ngắn, sau đó đối tượng không còn cần thiết và có thể bị hủy hoặc giải phóng.
Tạo đối tượng linh hoạt: Khi bạn muốn tạo ra nhiều phiên bản độc lập của đối tượng để sử
dụng chúng trong các tác vụ riêng biệt, ví dụ như xử lý đồng thời hoặc tạo các đối tượng tạm
thời cho việc tính toán.
Procedure vs function trong database
Định nghĩa:
Trong cơ sở dữ liệu, stored procedure (thủ tục lưu trữ) và function (hàm) đều là các đối tượng
dùng để thực hiện các công việc tính toán và xử lý dữ liệu.

Phân biệt:
Stored Procedure (Thủ tục lưu trữ):
Ưu điểm:
Hiệu suất: Stored procedure thường được biên dịch và lưu trữ trên server database, do đó nó
có thể được thực thi nhanh hơn so với việc gửi các câu lệnh SQL từ ứng dụng đến cơ sở dữ
liệu. Điều này giúp tăng hiệu suất và giảm thời gian đáp ứng.
Bảo mật: Stored procedure cho phép quản lý quyền truy cập và kiểm soát an toàn dữ liệu.
Người quản trị cơ sở dữ liệu có thể cấp quyền cho người dùng chỉ để thực thi stored procedure
mà không cần cấp quyền trực tiếp để truy cập vào các bảng dữ liệu.
Tái sử dụng: Stored procedure có thể được sử dụng lại trong nhiều ứng dụng và truy vấn khác
nhau, giúp tối ưu hóa và tiết kiệm thời gian lập trình.
Xử lý phức tạp: Stored procedure cho phép thực hiện các tác vụ phức tạp như xử lý dữ liệu,
kiểm tra điều kiện, và thực hiện nhiều câu lệnh trong một lần gọi.
Nhược điểm:
Khả năng khó bảo trì: Stored procedure có thể trở nên phức tạp và khó bảo trì khi kích thước
và số lượng stored procedure tăng lên. Cần có quy tắc tốt để quản lý và theo dõi stored
procedure.
Phiên bản và sự tương thích: Sự thay đổi cấu trúc của stored procedure có thể tác động đến
các ứng dụng sử dụng nó. Khi cần thay đổi stored procedure, việc đảm bảo tính tương thích và
quản lý phiên bản là quan trọng.

Function (Hàm):
Ưu điểm:
Modular: Function cho phép viết code modul và tái sử dụng trong nhiều truy vấn và ứng dụng
khác nhau. Điều này giúp giảm sự trùng lặp và tăng tính khả năng sử dụng lại code.
Truy vấn dữ liệu: Function có thể được sử dụng trong các câu lệnh SELECT để thực hiện tính
toán và truy vấn dữ liệu, cho phép trả về kết quả dựa trên giá trị đầu vào.
Độc lập với nền tảng: Function có thể được sử dụng trên nhiều hệ quản trị cơ sở dữ liệu khác
nhau mà không cần sửa đổi nhiều.
Nhược điểm:
Hiệu suất: Trong một số trường hợp, sử dụng function có thể gây ra hiệu suất kém hơn so với
việc sử dụng các câu lệnh SQL trực tiếp. Function có thể tạo ra độ trễ do việc truy cập dữ liệu
qua các lớp trung gian.
Giới hạn tính năng: Function có giới hạn về tính năng và khả năng xử lý so với stored
procedure. Chẳng hạn, function không thể thực hiện các câu lệnh DML (Data Manipulation
Language) như INSERT, UPDATE hoặc DELETE dữ liệu.

Tại sao dùng func không? Tại sao dùng procedure không?
Sử dụng Stored Procedure khi:
Thực hiện các thao tác phức tạp: Khi cần thực hiện các tác vụ xử lý phức tạp, kiểm tra điều
kiện, hoặc thực hiện nhiều câu lệnh SQL trong một lần gọi, stored procedure là lựa chọn phù
hợp. Stored procedure có khả năng xử lý dữ liệu phức tạp và thực hiện các tác vụ logic.
Quản lý giao dịch: Khi cần thực hiện các hoạt động quản lý giao dịch như bắt đầu, kết thúc giao
dịch, quay lại điểm khôi phục, hoặc xác nhận các thay đổi dữ liệu, stored procedure có thể hỗ
trợ quản lý giao dịch một cách linh hoạt và an toàn.
Cung cấp giao diện API: Stored procedure có thể được sử dụng để tạo ra giao diện API cho ứng
dụng. Bằng cách thực thi stored procedure, các ứng dụng khác có thể gọi và tương tác với cơ
sở dữ liệu một cách an toàn và kiểm soát.

Sử dụng Function khi:


Tính toán và truy vấn dữ liệu: Khi cần tính toán hoặc truy vấn dữ liệu và trả về kết quả, function
là lựa chọn phù hợp. Function có thể được sử dụng trong các câu lệnh SELECT để tính toán giá
trị dựa trên tham số đầu vào và trả về kết quả.
Tái sử dụng code: Khi có nhu cầu tái sử dụng code tính toán trong nhiều truy vấn hoặc ứng
dụng khác nhau, function là một cách tốt để tạo ra code modul và giảm sự trùng lặp.
Đơn giản và dễ bảo trì: Function thường đơn giản hơn và dễ bảo trì hơn stored procedure. Khi
chỉ cần tính toán và truy vấn dữ liệu mà không cần thực hiện các tác vụ phức tạp, function là
một lựa chọn tiện lợi.
Tính linh hoạt: Function có thể được sử dụng trên nhiều hệ quản trị cơ sở dữ liệu khác nhau
mà không cần thay đổi code, do đó nó cho phép tính linh hoạt trong việc di chuyển hoặc
chuyển đổi giữa các hệ quản trị cơ sở dữ liệu.

Ý anh Điệp
những library build sẵn. chỉ biên dịch một lần.
sau đó input output thực thi thui, không cần build nữa nên tốc độ nhanh, cải thiện
performance
func thủ tục hàm trong sql giúp cho mình tính toán.( trả về một giá trị, table...) THường người
ta kết hợp cả 2 fuc, proc

trong proc có thể gọi một số func để tính ngày lương, ngày nghỉ

Index là gì ?
Định nghĩa
Index chỉ mục trong sql. giống như mục lục của một danh sách
quay lại structure của database. có bản có nhiều record thì select một giá trị nào đó, phải đi
duyệt hết mất thời gian. nên dùng kỹ thuật đánh index để tăng performance lên
Trong một cuốn sách, cần kiến thức gì thì chỉ cần vô chỉ mục đó. Index cũng vậy, nó là một key
đại diện cho data trong đó
có nhiều loại index:
index khóa chính (cluster index)
khóa ngoại(non cluster index)
unique index (như số cmnd, sdt thể hiện sự duy nhất)

Ưu Điểm, nhược điểm của index ?


Ưu điểm
tăng perfomance query nhanh
nếu data nhiều thì thấy sự hiệu quả rõ ràng
Nhược điểm
Nó chính là con dao hai lưởi, nếu dùng đúng nó giúp ích rất nhiều, dùng sai là gánh nặng của
database
vì phải tạo vùng nhớ cho những index đó
Khi Update, create thì nó phải cập nhập lại những thông tin index.

Ví dụ kể trong dự án kms.
có bảng data gần 20tr record. mà search thông tin không có index thì mất performance là 8s.
sau khi đánh index còn dưới 1s
khi dùng index này lưu ý. Thứ tự rất quan trọng ảnh hưởng tới performance.
Ví dụ search theo mã sản phẩm (name) một cặp index khi đổi query

Có câu hỏi nào với công ty không ?


Nếu clear rồi ( thì bé tên gì đó đã trả lời rõ ràng)
hỏi có teambuilding, đá banh gì không. EM cũng thích thể thao.

Khi nào đi làm được ? Nếu đậu thì đi làm ngay hoặc đầu tháng đi làm được ( đang available)
có hỏi thì mới trả lời

kể react là library của facebook, những dự án em đang làm là angular, có dùng javascript.
Em có tìm hiểu và làm một số demo về reactjs ( dùng cho web), reactnative dùng cho mobile
trong react có 2 cái chính: properties, state.
Từ phiên bản 16.8 thì có thêm tính năng Hook. như use state, memo, context, effect.
clone đẩy lên github

You might also like