View profile

#215 - Grokking phát hành Dijkstra tập 2

Grokking Vietnam
Grokking Vietnam
Xin chào các bạn độc giả Grokking Newsletter!
Chúng tôi hân hạnh thông báo chính thức phát hành ấn phẩm Dijkstra Tập 2, 4 năm kể từ Dijkstra số đầu tiên.
Trong ấn phẩm này, toàn bộ các bài đều được viết bởi thành viên Grokking. Một số nội dung tiêu biểu từ Dijkstra 2:
  • Gobench, một benchmark framework được viết bằng Golang.
  • Bài toán đồng thuận trong hệ thống phân tán và thuật toán Raft.
  • Memory Abstraction - Làm thế nào để nhiều chương trình có thể truy cập RAM cùng lúc?
  • Thiết bị I/O và các giao thức I/O căn bản.
  • Trình biên dịch câu truy vấn.
  • Làm thế nào để xây dựng Resume chuẩn FANG.
  • Giới thiệu cuốn Designing Data-Intensive Applications.
  • Bài toán “Bữa ăn tối của các triết gia”.
Mời các bạn đặt hàng tại Dijkstra Tập 2.
Đặc biệt, để cảm ơn sự ủng hộ của các bạn thời gian qua, Grokking xin gửi tặng mã giảm giá 50% JXWZP dành cho 20 bạn đọc nhanh tay nhất ✨

Qua hơn 70 trang sách, chúng tôi hy vọng sẽ mang lại cho các bạn những kiến thức bổ ích xoay quanh các chủ đề quan trọng như 🔥 Database, 🔥 Network, 🔥 Distributed System, 🔥 Memory, cũng như các lĩnh vực thú vị khác.
Đây là thành quả từ sự nỗ lực rất lớn của đội ngũ tác giả và biên soạn trong suốt thời gian qua 🎉🎉🎉 Grokking xin gửi lời cảm ơn tới các thành viên, và rất mong nhận được sự ủng hộ của các bạn độc giả. 🙏
BBS Dijkstra
Những bài viết hay
Góc Lập Trình
Đề ra tuần này: Count and Say
Lời giải đề bài tuần trước: Reverse Integer
Đề bài yêu cầu đảo ngược thứ tự chữ số của một số nguyên trong khoảng [-2^31, 2^31 - 1], nếu số đảo ngược nằm ngoài khoảng trên, trả về kết quả bằng 0. Ngoài ra không được sử dụng kiểu dữ liệu số nguyên 64-bit.
Lời giải:
Không khó để nhận ra lời giải thông thường cho bài toán này, chúng ta chỉ việc thực hiện đảo ngược vị trí của các chữ số bằng phép chia và chia lấy dư cho 10, và lưu ý kiểm tra xem nó có vượt quá phạm vi số nguyên 32 bit hay không.
Tuy nhiên, có một quan sát khá thú vị có thể giúp tối ưu tốc độ chạy cho chương trình như sau:
Nhìn vào giá trị tối đa của kiểu số nguyên 32 bit là 2,147,483,647 (2^31 - 1), chúng ta thấy:
  • Trong trường hợp chúng ta bắt đầu thêm chữ số thứ 10, mà giá trị của số đảo ngược đã vượt quá 214,748,364, thì bất kể chữ số thứ 10 là bao nhiêu, số đó sẽ có giá trị vượt quá 2,147,483,647.
  • Nhưng nếu 9 chữ số đầu tiên không quá 214,748,364, thì chữ số thứ 10 có thể nằm trong khoảng từ 0-7.
Vậy, chúng ta cần đảm bảo rằng chữ số thứ 10 không lớn hơn 7. Thực ra với đề bài lần này, chữ số thứ 10 không thể lớn hơn 7, vì giá trị tối đa của kiểu số nguyên 32-bit là 2,147,483,647, tức là chữ số thứ 10 sau khi đảo ngược sẽ chỉ có thể là 1 hoặc 2.
Quan sát tương tự cũng có thể được thực hiện đối với các số âm.
Mời các bạn tham khảo lời giải tại: https://pastebin.com/SzUz26q5
(by ndaadn)
Tech Talk
Code & Tools
  • FiloDB - Cơ sở dữ liệu phân tán cho time series, hỗ trợ Prometheus;
  • 100 sự kiện web ấn tượng được Chrome developers ghi nhận.
Góc Sponsors
Là một trong những siêu ứng dụng hàng đầu ở khu vực Đông Nam Á, Grab cung cấp đa dạng dịch vụ cho hơn 187 triệu người dùng tại 428 thành phố ở tám quốc gia. Tại Grab, chúng tôi tin rằng nhân tài chính là trái tim của công ty, vì vậy chúng tôi luôn cố gắng tạo ra một môi trường tuyệt vời để tối ưu hoá tiềm năng của các Grabbers.
Những lý do bạn sẽ thích làm việc ở Grab:
  • Đồng nghiệp thân thiện, chuyên môn cao.
  • Môi trường làm việc đa quốc gia, cân bằng giữa cuộc sống và công việc (work-life balance)
  • Được tham gia giải quyết các bài toán khó (high scale, high traffic), với nhiều impact (vài trăm triệu người dùng)
  • Lương tháng 13 + lương thưởng bonus theo hiệu quả công việc.
  • Rất nhiều khoá học training đào tạo nội bộ cũng như đào tạo được cung cấp bởi các đối tác như Microsoft, Amazon, ..
Hiện văn phòng R&D của Grab đang tuyển nhiều vị trí như: Backend Developer, Frontend Developer, DevOps Engineer, Lead Software Engineer, ... Bạn có thể tham khảo tại Jobs - Grab Careers để biết thêm chi tiết.
Quotes
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
– Martin Fowler
Bạn đánh giá nội dung số newsletter này thế nào?
(1 = Rất tệ / 5 = Rất tốt)
👎 1 ——-—— 3 —— 4 —— 5 👍
Đánh giá của các bạn sẽ giúp chúng tôi liên tục cải thiện nội dung Newsletter!
Did you enjoy this issue? Yes No
Grokking Vietnam
Grokking Vietnam

Cảm ơn bạn đã dành thời gian đọc newsletter kỳ này và chúng tôi hi vọng rằng bạn đã khám phá ra một số điều mới mẻ từ các bài viết trên. Các bạn có thể đọc lại các số cũ tại website newsletter.grokking.org

In order to unsubscribe, click here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Created with Revue by Twitter.
Viet Nam