View profile

#74 - Làm sao để trở thành một Software Engineer giỏi?

Revue
 
Vào ngày hôm qua 22/6, Grokking Tech Talk số 31, với chủ đề "Asynchronous Communications" (Giao tiếp
 

Grokking Newsletter

June 23 · Issue #75 · View online
Tuyển tập những bài viết hay cùng sự kiện bổ ích dành cho kĩ sư phần mềm tại Việt Nam.

Vào ngày hôm qua 22/6, Grokking Tech Talk số 31, với chủ đề “Asynchronous Communications (Giao tiếp bất đồng bộ) được trình bày bởi anh Huy - CTO @ Holistics, đã diễn ra thành công tốt đẹp với sự tham gia của hơn 60 bạn. Mời các bạn cùng xem lại video record tại đây, hoặc slide tại đây.

Những bài viết hay
One secret to becoming a great software engineer
Video Upload Latency Improvements at Instagram
Is Angular dying because of React?
Four Startup Engineering Killers
Có thể bạn chưa biết
Inversion – Nghĩ ngược lại và làm khác đi
Code & Tools
Quiz
Tuần trước, Grokking đã gửi câu hỏi về setInterval, chúng tôi đã nhận được câu trả lời từ các bạn nguyentoan***@gmail.com như sau:
The answer is A, “a unique id” the setInterval will return a unique id, we will use that to remove interval (clearInterval). It is a best practice that you should always clear interval when the job is done.
Ngoài ra, chúng tôi cũng nhận được câu trả lời từ bạn Đức như sau:
Đoạn code trên sẽ trả về:
  • timerId khi chúng chạy trên browsers
  • Timer Object khi chạy trên Node.JS
Nếu bạn nào dùng Typescript có thể kiểm tra static type của setInterval
Browser
interface WindowOrWorkerGlobalScope { … setInterval(handler: TimerHandler, timeout?: number, …arguments: any[]): number; }
Node.JS
declare module “timers” {
function setInterval(callback: (…args: any[]) => void, ms: number, …args: any[]): NodeJS.Timeout;
}
class Timeout implements Timer {
ref(): void;
refresh(): void;
unref(): void;
}
Tại sao có sự khác nhau này?
JavaScript là một ngôn ngữ có nhiều cách hiện thực (v8, JavaScriptCore, SpiderMonkey) và runtime environment khác nhau (browsers chrome, firefox, Safari, Node.JS,…) dựa trên các chuẩn (specification) Ecmascript và HTML specification. Tìm hiểu thêm một chút thì chúng ta nhận ra rằng các hàm timer (setTimeout, setInterval,…) được định nghĩa trong HTML specification (dành cho browser) thay vì Ecmascript (dành cho JS VMs: v8, JSC). Nghĩa là các hàm timer là API của runtime environment (browsers, Node.JS) chứ không phải API của JS VMs. Node.JS lại không tuân theo HTML specification vì Node.JS không phải là một browser nên sẽ có sự khác biệt ở một số API.
Link tham khảo:
Ban biên tập Grokking xin cảm ơn những câu trả lời rất chi tiết của các bạn.
Tuần này, mời các bạn cùng trả lời câu hỏi sau, thuật toán nào dưới dây không phải là một thuật toán Tham lam?
A. Dijkstra’s shortest path algorithm
B. Prim’s algorithm
C. Kruskal algorithm
D. Huffman Coding
E. Bellmen Ford Shortest path algorithm
Các bạn gửi câu trả lời qua địa chỉ email newsletter@grokking.org, đáp án sẽ được công bố vào số newsletter tiếp theo.
Góc Game
Trong số Newsletter tuần trước, bài viết của anh Huydx có nhắc tới những quyết định có tính thiên vị trong quá trình tuyển dụng.
Ở phần cuối của Newsletter tuần này, xin mời các bạn cùng chơi một trò chơi tuyển dụng tại đây, và xem cách thuật toán đánh giá ứng viên để loại bỏ những quyết định có tính thiên vị như thế nào nhé.

The best error message is the one that never shows up.” - Thomas Fuchs

Did you enjoy this issue?
If you don't want these updates anymore, please unsubscribe here
If you were forwarded this newsletter and you like it, you can subscribe here
Powered by Revue
Charmington La Pointe, 181 Cao Thang, Dist 10, Ho Chi Minh city, Viet Nam