sắp phỏng vấn onsite Amazon (đi thật)

thanhNoel

New Member
Joined
Oct 5, 2017
Messages
112
Reaction score
0
Last Updated 2019-09-19 ,13:17
Tình hình là từ cuối tháng 7 mình có apply online vào amazon.jobs cho vị trí SDE2 ở Vancouver.


TLDR: vừa nhận mail báo amazon sẽ chu cấp cho mình sang pv onsite.

Dưới đây là giới thiệu sơ qua về bản thân và "hành trình" có được cơ hội này.

*** Về mình:
  • 1 developer cũng gọi là tầm thường như bao developer khác :chaymau:. Học ĐTVT ra với kiến thức lập trình = 0. Đi du học học bổng Utachi ngành ĐTVT. Đến lúc học xong thì bị đẩy đi thực tập và bắt đầu làm lập trình từ lúc đấy (tháng 6/2013) bằng C và Java android.
  • Tháng 3/2014 thì về VN, xin vào FSOFT với mức lương 6tr/th làm C . Sau đấy với tiếng Anh xịn xò (7.5 IELTS từ hồi trc khi đi du học) được đẩy đi Nhật mấy tháng. Về nước thì lại làm java ở FPT mấy tháng rồi nhảy việc.:go:
  • Nhảy việc sang 1 cty outsource khác lương cao hơn khá nhiều so vs FSOFT, chủ yểu làm Java, có tí Python. Vẫn đang làm đến giờ.
  • Trong quá trình đi làm thì mình thỉnh thoảng cũng học thêm các thứ về cấu trúc dữ liệu và giải thuật, functional programming. Cụ thể là khóa Algorithm Part 1/2 và Functional programming with Scala trên coursera.org là 2 khóa đóng góp nhiều nhất. Ngoài ra thì sách vở down lung tung về đọc.:byebye:.
  • Trong mấy năm vừa rồi thì cứ 2 năm mình lại thi IELTS 1 nhát, được 2 lần 8.0 năm 2016 và 2018 (EDIT: cũng chả ôn luyện gì đâu, vợ con rồi mà. Cứ đến ngày đi thi thôi. Tại level tiếng Anh của mình nó ở sẵn đấy rồi mà vẫn dùng liên tục nên ko bị chột đi, với cả mình thi General. Lần cuối thì academic là để du học 2012)
*** Về câu chuyện giữa Amazon và mình:
  • Vì thấy chán chán VN nên cũng từ lâu ngó thử Canada với chính sách mở cửa của nó. Vấn đề là sau khi tìm hiểu thì có vẻ sang mà chưa có việc thì dễ nhưng kiếm việc rồi ở lại mới khó. Mình lại vợ con rồi, đi kiểu đấy quá rủi ro. Thôi thì kiếm ai nhận mình trước. Mà như vậy thì chỉ có mấy cty lớn. Sẵn tiện 2 năm gần đây đang học technology stack của AWS, ngó thử Amazon.
  • Tìm thấy tin đăng tuyển trên web của nó cho SDE 2 cho Amazon Connect, cùng với check list mấy cái kỹ năng cần thiết. Sau khi tick thấy mình có vẻ đủ đk, quăng đại cái CV vào và cũng ko nghĩ gì nhiều :stick:
  • First contact: 26/7/2019 mình nhận mail từ 1 Technical recruiter của Amazon, nói là CV của mình pass screening, và gửi link online code assessment. Link có hiệu lực 1 tuần. Gửi kèm là 1 lô các kiến thức mình nên ôn lại và các trang web hữu ích. Đọc mail bắt đầu rén tại vì có chuẩn bị quái gì đâu :sosad:. Thế là bắt đầu điên cuồng học ôn. Tất nhiên là vẫn phải đi làm ngày 8h, tối về đón con, trông con và cho nó ngủ, rửa bát nữa, thỉnh thoảng bật game lên chơi.:">

- Còn 10h thì hết hạn bài test và mình bắt đầu làm (sau khi cho con bé con đi ngủ :byebye:). Có 2 bài làm trong 90 phút. Đề bài = tiếng Anh. Tóm tắt đề bài là như này:
UPDATE:
Bài 1:
https://www.geeksforgeeks.org/optima...erge-patterns/
Bài 2:
https://aonecode.com/aplusplus/inter...99161390068223
---------
Bài 1: có danh sách các file với độ lớn của file được thể hiện = số integer (input List). Cần merge các file lại thành 1 file cuối cùng với quy luật như sau:
* merge được 2 file 1 lần.
* chi phí mỗi lần merge bằng tổng kích thước 2 file
* file sau khi merge bằng tổng kích thước 2 file
-> tìm chi phí nhỏ nhất để merge tất cả các file.
--------
Bài 2: 1 hãng vận tải có danh sách các tuyến bay đi và về. Danh sách tuyến bay được thể hiện = 1 List. Trong đó, mỗi List thuộc List to có 2 phần tử: phần tử thứ nhất là số hiệu tuyến đi/về (integer: 1,2,3...) | phần tử thứ hai là chi phí tuyến đi/về (integer: 1000,2000,3000...)
* Khi một máy bay thực hiện chuyến đi và thực hiện chuyến về sẽ mất tổng chi phí là X.
* Cho số tự nhiên N. Khi X tôi muốn upload được ảnh từ điện thoại, làm như nào
-> ảnh này upload lên cần share cho tất cả mọi người trong danh bạ, làm như nào
-> share cho chỉ những người dùng hệ thống này
-> ảnh này chỉ được share cho những người dùng ở châu Phi, làm như nào?
-> ở châu Phi mạng rất kém, muốn xem ảnh full resolution, làm như nào?
-> khi up ảnh lên cần thông báo cho tất cả ng dùng trong danh bạ mà có dùng hệ thống, làm như nào
-> Cơ chế thông báo, nếu ko dùng 3rd party, theo anh là gì?
-> Khi có rất rất nhiều người dùng hệ thống, tải của server có hạn, cần làm gì?
-> Giả sử việc up ảnh tốn rất nhiều thời gian và không xử lý được ngay khi tạo request up ảnh, hệ thống thì có nhiều người dùng với các tier khác nhau 1,2,3... Làm sao để đảm bảo người dùng tier cao hơn được xử lý việc up ảnh trước?Chốt lại là mình ko cảm thấy response của ông ý có vẻ negative khi nhận các câu trả lời của mình khi ông ý cứ biến đổi tình huống. Kinh nghiệm là khả năng cao là yêu cầu ông ý đưa ra không rõ ràng hay sai (ví dụ ban đầu là upload ảnh và hệ thống "tự" biết là danh bạ ông ý có những ai để gửi ảnh cho họ, cần correct lại requirement - nói chung là giống như khi bạn đi họp và clear requirement với BA thôi)
- Coding question: lúc hỏi xong design thì ông ý bảo là phải đi họp đây, nhưng mà cậu thích thì tôi sẽ hỏi thêm coding, và nó không phải mục đích chính của buổi hôm nay. Lúc đấy mình cũng buồn ngủ lắm rồi (1h sáng) nhưng cũng nói cứng bảo cứ hỏi đi. Thế là ông ý cho bài tập, rồi bảo ko cần phải code đàng hoàng đâu, cứ nói cho tôi hướng giải. May mà hết giờ rồi chứ mình cũng hơi mụ mị rồi, lúc đấy chỉ nói được qua qua về hướng thôi. Bài tập là:
Cho 1 số A và 1 số B có cùng số chữ số. Có thể biến đổi số A thành số B từ từ bằng cách thay đổi 1 chữ số trong số A 1 đơn vị. Ví dụ: từ 321 thành 132, có thể đổi như sau:
321 -> 322 -> 332 -> 232 -> 132
Cho 1 list các số List và 2 số A, B. A chỉ có thể biến đổi thành 1 số thuộc List đã cho. Trả về true/false xem với list đấy, có thể biến A thành B không.
Đang vừa nghĩ hướng giải vừa trình bày cho ông ý thì ông ý đi họp và cảm ơn các thứ.
------------
Phỏng vấn sáng t5, thì hôm nay tối thứ 2 mình nhận mail pass và sẽ được đi Vancouver 1 bữa!!
Phew! Tạm thời thế thôi, mình cũng ko trông đợi là lần đầu pv amazon mà pass luôn nhận luôn, tuy nhiên vẫn cố gằng hết sức thôi, càng đi xa càng vui. Nhất là giờ tự nhiên được đi du lịch miễn phí.
Sẽ update dần sau.
Nói chung là với ae developer mà muốn thoát thân thì mình chỉ biết nói là học giỏi ngoại ngữ vào, chăm 1 tí, cơ hội sẽ đến với các bạn, và đặc biệt là con của các bạn.

À mà mình cũng ko sợ lần này trượt, vì bọn như này nó ko phải là trượt 1 lần là thôi, mình có thể apply liên tục 6 tháng 1 lần. Lần này trượt thì mình có kn 6 tháng sau apply tiếp. Có thể vẫn là Amazon Vancouver, có thể là amazon chỗ khác, hay google microsoft gì đấy chẳng hạn. Ít ra amazon đã nhận CV của mình. Mình sẽ tự tin hơn apply chỗ khác

========================
EDIT: Nhiều bác hỏi kinh nghiệm học tiếng Anh quá. Mình trả lời chung luôn vậy: mình chả có kinh nghiệm gì cả. Tiếng Anh của mình là do quá trình tích lũy chơi game đọc truyện xem phim từ thời cấp 2, có lẽ là cộng với năng khiếu ngôn ngữ ở mức độ nhất định nữa.
Lên đại học mình có đi học thêm ở trung tâm nhưng trình cũng không thấy lên mấy. Xong rồi mình có 1 năm chỉ ngồi làm bài tập IELTS trong bộ chục quyển của cambridge ý, làm theo kiểu đọc hiểu các bài reading trong đấy. Có thể với nền tiếng Anh tích lũy từ nhỏ nên học kiểu đấy nó lên nhanh.
Lúc học xong ĐH thì để chuẩn bị đi du học, mình có đi học độ 4-5 tháng ở trung tâm. Nói chung là mình cảm giác nó giúp tổ chức lại mớ hổ lốn mình đã có sẵn trong đầu (nhờ quá trình tích lũy từ cấp 2 như trên). Lúc đấy thi IELTS Academic đc 7.5.
Trong quá trình học hay lúc mới đi làm cũng rảnh nên mình hay đọc truyện = tiếng Anh. Quyển đầu tiên mình đọc thì là Harry Potter tập 6. Hồi đi du học thì cũng chỉ có truyện tiếng Anh mà đọc, đọc Hunger games chẳng hạn. Có một đợt ngồi cày quyển Đồi Gió Hú tiếng Anh (đọc xong hoa cmn mắt).
Từ khi đi du học về thì mình cũng không dùng đến tiếng Anh speaking mấy, tuy nhiên vì làm dev nên tài liệu vẫn phải đọc liên tục nên không bị mất tiếp cận. Dạo gần đây thì mình hay xem các phim series như là Big Bang Theory (tuy nhiều khi chả hiểu gì).

Last Updated 17-09-2019 at 21:33
Tình hình là từ cuối tháng 7 mình có apply online vào amazon.jobs cho vị trí SDE2 ở Vancouver.


TLDR: vừa nhận mail báo amazon sẽ chu cấp cho mình sang pv onsite.

Dưới đây là giới thiệu sơ qua về bản thân và "hành trình" có được cơ hội này.

*** Về mình:
- 1 developer cũng gọi là tầm thường như bao developer khác :chaymau:. Học ĐTVT ra với kiến thức lập trình = 0. Đi du học học bổng Utachi ngành ĐTVT. Đến lúc học xong thì bị đẩy đi thực tập và bắt đầu làm lập trình từ lúc đấy (tháng 6/2013) bằng C và Java android.
- Tháng 3/2014 thì về VN, xin vào FSOFT với mức lương 6tr/th làm C++. Sau đấy với tiếng Anh xịn xò (7.5 IELTS từ hồi trc khi đi du học) được đẩy đi Nhật mấy tháng. Về nước thì lại làm java ở FPT mấy tháng rồi nhảy việc.:go:
- Nhảy việc sang 1 cty outsource khác lương cao hơn khá nhiều so vs FSOFT, chủ yểu làm Java, có tí Python. Vẫn đang làm đến giờ.
- Trong quá trình đi làm thì mình thỉnh thoảng cũng học thêm các thứ về cấu trúc dữ liệu và giải thuật, functional programming. Cụ thể là khóa Algorithm Part 1/2 và Functional programming with Scala trên coursera.org là 2 khóa đóng góp nhiều nhất. Ngoài ra thì sách vở down lung tung về đọc.:byebye:.
- Trong mấy năm vừa rồi thì cứ 2 năm mình lại thi IELTS 1 nhát, được 2 lần 8.0 năm 2016 và 2018 (EDIT: cũng chả ôn luyện gì đâu, vợ con rồi mà. Cứ đến ngày đi thi thôi. Tại level tiếng Anh của mình nó ở sẵn đấy rồi mà vẫn dùng liên tục nên ko bị chột đi, với cả mình thi General. Lần cuối thì academic là để du học 2012)

*** Về câu chuyện giữa Amazon và mình:

- Vì thấy chán chán VN nên cũng từ lâu ngó thử Canada với chính sách mở cửa của nó. Vấn đề là sau khi tìm hiểu thì có vẻ sang mà chưa có việc thì dễ nhưng kiếm việc rồi ở lại mới khó. Mình lại vợ con rồi, đi kiểu đấy quá rủi ro. Thôi thì kiếm ai nhận mình trước. Mà như vậy thì chỉ có mấy cty lớn. Sẵn tiện 2 năm gần đây đang học technology stack của AWS, ngó thử Amazon.
- Tìm thấy tin đăng tuyển trên web của nó cho SDE 2 cho Amazon Connect, cùng với check list mấy cái kỹ năng cần thiết. Sau khi tick thấy mình có vẻ đủ đk, quăng đại cái CV vào và cũng ko nghĩ gì nhiều :stick:
- First contact: 26/7/2019 mình nhận mail từ 1 Technical recruiter của Amazon, nói là CV của mình pass screening, và gửi link online code assessment. Link có hiệu lực 1 tuần. Gửi kèm là 1 lô các kiến thức mình nên ôn lại và các trang web hữu ích. Đọc mail bắt đầu rén tại vì có chuẩn bị quái gì đâu :sosad:. Thế là bắt đầu điên cuồng học ôn. Tất nhiên là vẫn phải đi làm ngày 8h, tối về đón con, trông con và cho nó ngủ, rửa bát nữa, thỉnh thoảng bật game lên chơi.:">


- Còn 10h thì hết hạn bài test và mình bắt đầu làm (sau khi cho con bé con đi ngủ :byebye:). Có 2 bài làm trong 90 phút. Đề bài = tiếng Anh. Tóm tắt đề bài là như này:
UPDATE:
Bài 1:
https://www.geeksforgeeks.org/optimal-file-merge-patterns/
Bài 2:
https://aonecode.com/aplusplus/interviewctrl/getInterview/5321399161390068223
---------
+ Bài 1: có danh sách các file với độ lớn của file được thể hiện = số integer (input List<Integer>). Cần merge các file lại thành 1 file cuối cùng với quy luật như sau:
* merge được 2 file 1 lần.
* chi phí mỗi lần merge bằng tổng kích thước 2 file
* file sau khi merge bằng tổng kích thước 2 file
-> tìm chi phí nhỏ nhất để merge tất cả các file.
--------
+ Bài 2: 1 hãng vận tải có danh sách các tuyến bay đi và về. Danh sách tuyến bay được thể hiện = 1 List<List<Integer>>. Trong đó, mỗi List<Integer> thuộc List to có 2 phần tử: phần tử thứ nhất là số hiệu tuyến đi/về (integer: 1,2,3...) | phần tử thứ hai là chi phí tuyến đi/về (integer: 1000,2000,3000...)
* Khi một máy bay thực hiện chuyến đi và thực hiện chuyến về sẽ mất tổng chi phí là X.
* Cho số tự nhiên N. Khi X <= N và N - X là minimum thì chuyến đi/về được coi là tối ưu.
* Trả về tất cả các cặp số hiệu tuyến đi/về là tối ưu (format List<List<Integer>>)
-----------------
Để ae vui thì mình ko nêu lời giải :byebye:. Thực ra so với mấy bài test vui online thì mình thấy ko quá khó. Mỗi tội cái IDE online của nó cũng ko có auto import, auto complete, y như mấy trang online như hackerrank. Nói chung là bài 1 thì mình làm pass 9/10 test cases và bài 2 15/15 test cases, thừa 5 phút mãi ko nghĩ ra tại sao bài 1 fail test, xong rồi submit. Submit xong thì có câu hỏi giải thích về solution của mình và đánh giá time complexity. Lúc trả lời câu hỏi mình mới nhớ ra tại sao fail test case và ghi luôn vào phần trả lời lí do. Sau đấy có trắc nghiệm về tác phong làm việc = cách trả lời các câu hỏi tình huống với đáp án chung là mức độ đồng ý (5 mức: rất ko đồng ý, ko đồng ý, sao cũng đc, đồng ý, hoàn toàn đồng ý) với các tình huống mà nó đưa ra.:">
- Sau 3-4 ngày thì nhận mail thông báo đã pass vòng code test và mời sang Vancouver phỏng vấn luôn :adore:. Lúc đấy mừng quýnh, khoe khắp mọi nơi kể cả voz (xem post history sẽ thấy), cơ mà cũng nghĩ thấy quái quái vì quy trình của nó mình google ra là phải thêm 1-2 vòng phỏng vấn điện thoại nữa, nên là email hỏi lại cho rõ.


- Hóa ra là phải thêm vòng phỏng vấn điện thoại thật :sosad:. Với cả sau khi google thì phỏng vấn cho level 2 (SDE2) hỏi về technical design thấy có vẻ khó vkl ra :sweat:, kiểu như "thiết kế hệ thống payment của uber", nên là rén cực độ :sweat:. Thế nên hỏi lại bà nhân sự là thế có được down xuống apply cho level 1 không. Mấy hôm sau thì có hẹn gọi điện vs bà ý để nói về chuẩn bị cho pv. Bà ý nói là không down xuống được vì Amazon sẽ không giúp thủ tục hay trả toàn bộ chi phí relocation khi tuyển SDE1, cơ mà SDE2 thì CÓ!!! :adore:. Ngoài ra bà recruiter cũng rất ngon ngọt dỗ dành mình là đừng có lo, sợ là bình thường, tao tin mày sẽ làm đc blah blah... nói chung là cũng tạo ko khí dễ chịu và giúp mình tự tin hơn, ghi nhận.
- Sau khi đã chốt là ok tôi đồng ý pv điện thoại, thì được gửi 1 cái link set lịch. Bà recruiter nói là phải chọn lịch pv trong khoảng 10h - 16h PST. Tương đương với nó là 0h - 6h sáng giờ VN :sweat:. Thế là đành book mấy hôm lúc 0h lúc dự án vừa kết thúc 1 sprint hay ngày đầu sprint.
- Book xong thì 1 hôm sau nhận mail báo là nó pick ngày gần nhất có thể để pv. Ok fine



- Trong lúc chờ pv thì điên cuồng lên youtube tìm tài liệu, subscribe 1 số đồng chí nói về cách thiết kế hệ thống, v.v... Nói chung là chả đâu vào đâu.
- Đến hôm phỏng vấn vẫn phải cho con đi ngủ :canny: vì mẹ nó ko cho đi ngủ nổi. Tu 1 cốc cà phê rồi ngồi đợi.
- Đến giờ pv, ông pv vào cái live conference muộn 1 tí, tranh thủ setup cái điện thoại chĩa vào màn hình quay lại. Cuối cùng nghe đc mỗi tiếng mình, không dám setup loa ngoài vì sợ khó nghe, ko dám setup record màn hình sợ nó detect đc đánh trượt, đành vậy.
- Trong lúc pv: sau màn chào hỏi, ông ý nói sẽ có 3 phần: behavioral questions, technical design questions, và coding question.
- Behavioral: phần này cần bám sát các leadership principle của amazon. Đối với phỏng vấn điện thoại, bà recruiter nhắc từ trước là cần tập trung vào "Deliver Result" và "Earn trust". Cụ thể là mình sẽ được hỏi câu hỏi tình huống về kinh nghiệm trong quá khư và mình cần phải lái nó sao cho thể hiện được mình mang sẵn trong người các leadership principle của nó. Mình nhớ là được hỏi 3 câu:
+ Nói về 1 lần mà cậu bị chỉ trích. Cậu phản ứng như nào?
+ Nói về 1 lần mà cậu phải làm việc với rất nhiều áp lực. Cậu làm gì? như nào?
+ Nói về 1 lần cậu phạm sai lầm. Cậu xử lý như nào?
- Technical design: phần này dễ hơn tưởng tượng. Nói chung là ông ý đưa ra 1 use case đơn giản và phức tạp hóa dần lên, mình phải biến đổi cái thiết kế của mình để đáp ứng được các nhu cầu đấy. Mình nhớ được cụ thể như sau (có thể miss 1 vài câu):

-> tôi muốn upload được ảnh từ điện thoại, làm như nào
-> ảnh này upload lên cần share cho tất cả mọi người trong danh bạ, làm như nào
-> share cho chỉ những người dùng hệ thống này
-> ảnh này chỉ được share cho những người dùng ở châu Phi, làm như nào?
-> ở châu Phi mạng rất kém, muốn xem ảnh full resolution, làm như nào?
-> khi up ảnh lên cần thông báo cho tất cả ng dùng trong danh bạ mà có dùng hệ thống, làm như nào
-> Cơ chế thông báo, nếu ko dùng 3rd party, theo anh là gì?
-> Khi có rất rất nhiều người dùng hệ thống, tải của server có hạn, cần làm gì?
-> Giả sử việc up ảnh tốn rất nhiều thời gian và không xử lý được ngay khi tạo request up ảnh, hệ thống thì có nhiều người dùng với các tier khác nhau 1,2,3... Làm sao để đảm bảo người dùng tier cao hơn được xử lý việc up ảnh trước?

Chốt lại là mình ko cảm thấy response của ông ý có vẻ negative khi nhận các câu trả lời của mình khi ông ý cứ biến đổi tình huống. Kinh nghiệm là khả năng cao là yêu cầu ông ý đưa ra không rõ ràng hay sai (ví dụ ban đầu là upload ảnh và hệ thống "tự" biết là danh bạ ông ý có những ai để gửi ảnh cho họ, cần correct lại requirement - nói chung là giống như khi bạn đi họp và clear requirement với BA thôi)
- Coding question: lúc hỏi xong design thì ông ý bảo là phải đi họp đây, nhưng mà cậu thích thì tôi sẽ hỏi thêm coding, và nó không phải mục đích chính của buổi hôm nay. Lúc đấy mình cũng buồn ngủ lắm rồi (1h sáng) nhưng cũng nói cứng bảo cứ hỏi đi. Thế là ông ý cho bài tập, rồi bảo ko cần phải code đàng hoàng đâu, cứ nói cho tôi hướng giải. May mà hết giờ rồi chứ mình cũng hơi mụ mị rồi, lúc đấy chỉ nói được qua qua về hướng thôi. Bài tập là:
+ Cho 1 số A và 1 số B có cùng số chữ số. Có thể biến đổi số A thành số B từ từ bằng cách thay đổi 1 chữ số trong số A 1 đơn vị. Ví dụ: từ 321 thành 132, có thể đổi như sau:
321 -> 322 -> 332 -> 232 -> 132
+ Cho 1 list các số List<Integer> và 2 số A, B. A chỉ có thể biến đổi thành 1 số thuộc List đã cho. Trả về true/false xem với list đấy, có thể biến A thành B không.
Đang vừa nghĩ hướng giải vừa trình bày cho ông ý thì ông ý đi họp và cảm ơn các thứ.
------------
Phỏng vấn sáng t5, thì hôm nay tối thứ 2 mình nhận mail pass và sẽ được đi Vancouver 1 bữa!!
Phew! Tạm thời thế thôi, mình cũng ko trông đợi là lần đầu pv amazon mà pass luôn nhận luôn, tuy nhiên vẫn cố gằng hết sức thôi, càng đi xa càng vui. Nhất là giờ tự nhiên được đi du lịch miễn phí.
Sẽ update dần sau.
Nói chung là với ae developer mà muốn thoát thân thì mình chỉ biết nói là học giỏi ngoại ngữ vào, chăm 1 tí, cơ hội sẽ đến với các bạn, và đặc biệt là con của các bạn.

À mà mình cũng ko sợ lần này trượt, vì bọn như này nó ko phải là trượt 1 lần là thôi, mình có thể apply liên tục 6 tháng 1 lần. Lần này trượt thì mình có kn 6 tháng sau apply tiếp. Có thể vẫn là Amazon Vancouver, có thể là amazon chỗ khác, hay google microsoft gì đấy chẳng hạn. Ít ra amazon đã nhận CV của mình. Mình sẽ tự tin hơn apply chỗ khác

========================
EDIT: Nhiều bác hỏi kinh nghiệm học tiếng Anh quá. Mình trả lời chung luôn vậy: mình chả có kinh nghiệm gì cả. Tiếng Anh của mình là do quá trình tích lũy chơi game đọc truyện xem phim từ thời cấp 2, có lẽ là cộng với năng khiếu ngôn ngữ ở mức độ nhất định nữa.
Lên đại học mình có đi học thêm ở trung tâm nhưng trình cũng không thấy lên mấy. Xong rồi mình có 1 năm chỉ ngồi làm bài tập IELTS trong bộ chục quyển của cambridge ý, làm theo kiểu đọc hiểu các bài reading trong đấy. Có thể với nền tiếng Anh tích lũy từ nhỏ nên học kiểu đấy nó lên nhanh.
Lúc học xong ĐH thì để chuẩn bị đi du học, mình có đi học độ 4-5 tháng ở trung tâm. Nói chung là mình cảm giác nó giúp tổ chức lại mớ hổ lốn mình đã có sẵn trong đầu (nhờ quá trình tích lũy từ cấp 2 như trên). Lúc đấy thi IELTS Academic đc 7.5.
Trong quá trình học hay lúc mới đi làm cũng rảnh nên mình hay đọc truyện = tiếng Anh. Quyển đầu tiên mình đọc thì là Harry Potter tập 6. Hồi đi du học thì cũng chỉ có truyện tiếng Anh mà đọc, đọc Hunger games chẳng hạn. Có một đợt ngồi cày quyển Đồi Gió Hú tiếng Anh (đọc xong hoa cmn mắt).
Từ khi đi du học về thì mình cũng không dùng đến tiếng Anh speaking mấy, tuy nhiên vì làm dev nên tài liệu vẫn phải đọc liên tục nên không bị mất tiếp cận. Dạo gần đây thì mình hay xem các phim series như là Big Bang Theory (tuy nhiều khi chả hiểu gì).

Last Updated 16-09-2019 at 21:33
Tình hình là từ cuối tháng 7 mình có apply online vào amazon.jobs cho vị trí SDE2 ở Vancouver.


TLDR: vừa nhận mail báo amazon sẽ chu cấp cho mình sang pv onsite.

Dưới đây là giới thiệu sơ qua về bản thân và "hành trình" có được cơ hội này.

*** Về mình:
- 1 developer cũng gọi là tầm thường như bao developer khác :chaymau:. Học ĐTVT ra với kiến thức lập trình = 0. Đi du học học bổng Utachi ngành ĐTVT. Đến lúc học xong thì bị đẩy đi thực tập và bắt đầu làm lập trình từ lúc đấy (tháng 6/2013) bằng C và Java android.
- Tháng 3/2014 thì về VN, xin vào FSOFT với mức lương 6tr/th làm C++. Sau đấy với tiếng Anh xịn xò (7.5 IELTS từ hồi trc khi đi du học) được đẩy đi Nhật mấy tháng. Về nước thì lại làm java ở FPT mấy tháng rồi nhảy việc.:go:
- Nhảy việc sang 1 cty outsource khác lương cao hơn khá nhiều so vs FSOFT, chủ yểu làm Java, có tí Python. Vẫn đang làm đến giờ.
- Trong quá trình đi làm thì mình thỉnh thoảng cũng học thêm các thứ về cấu trúc dữ liệu và giải thuật, functional programming. Cụ thể là khóa Algorithm Part 1/2 và Functional programming with Scala trên coursera.org là 2 khóa đóng góp nhiều nhất. Ngoài ra thì sách vở down lung tung về đọc.:byebye:.
- Trong mấy năm vừa rồi thì cứ 2 năm mình lại thi IELTS 1 nhát, được 2 lần 8.0 năm 2016 và 2018 (EDIT: cũng chả ôn luyện gì đâu, vợ con rồi mà. Cứ đến ngày đi thi thôi. Tại level tiếng Anh của mình nó ở sẵn đấy rồi mà vẫn dùng liên tục nên ko bị chột đi, với cả mình thi General. Lần cuối thì academic là để du học 2012)

*** Về câu chuyện giữa Amazon và mình:

- Vì thấy chán chán VN nên cũng từ lâu ngó thử Canada với chính sách mở cửa của nó. Vấn đề là sau khi tìm hiểu thì có vẻ sang mà chưa có việc thì dễ nhưng kiếm việc rồi ở lại mới khó. Mình lại vợ con rồi, đi kiểu đấy quá rủi ro. Thôi thì kiếm ai nhận mình trước. Mà như vậy thì chỉ có mấy cty lớn. Sẵn tiện 2 năm gần đây đang học technology stack của AWS, ngó thử Amazon.
- Tìm thấy tin đăng tuyển trên web của nó cho SDE 2 cho Amazon Connect, cùng với check list mấy cái kỹ năng cần thiết. Sau khi tick thấy mình có vẻ đủ đk, quăng đại cái CV vào và cũng ko nghĩ gì nhiều :stick:
- First contact: 26/7/2019 mình nhận mail từ 1 Technical recruiter của Amazon, nói là CV của mình pass screening, và gửi link online code assessment. Link có hiệu lực 1 tuần. Gửi kèm là 1 lô các kiến thức mình nên ôn lại và các trang web hữu ích. Đọc mail bắt đầu rén tại vì có chuẩn bị quái gì đâu :sosad:. Thế là bắt đầu điên cuồng học ôn. Tất nhiên là vẫn phải đi làm ngày 8h, tối về đón con, trông con và cho nó ngủ, rửa bát nữa, thỉnh thoảng bật game lên chơi.:">


- Còn 10h thì hết hạn bài test và mình bắt đầu làm (sau khi cho con bé con đi ngủ :byebye:). Có 2 bài làm trong 90 phút. Đề bài = tiếng Anh. Tóm tắt đề bài là như này:
UPDATE:
Bài 1:
https://www.geeksforgeeks.org/optimal-file-merge-patterns/
Bài 2:
https://aonecode.com/aplusplus/interviewctrl/getInterview/5321399161390068223
---------
+ Bài 1: có danh sách các file với độ lớn của file được thể hiện = số integer (input List<Integer>). Cần merge các file lại thành 1 file cuối cùng với quy luật như sau:
* merge được 2 file 1 lần.
* chi phí mỗi lần merge bằng tổng kích thước 2 file
* file sau khi merge bằng tổng kích thước 2 file
-> tìm chi phí nhỏ nhất để merge tất cả các file.
--------
+ Bài 2: 1 hãng vận tải có danh sách các tuyến bay đi và về. Danh sách tuyến bay được thể hiện = 1 List<List<Integer>>. Trong đó, mỗi List<Integer> thuộc List to có 2 phần tử: phần tử thứ nhất là số hiệu tuyến đi/về (integer: 1,2,3...) | phần tử thứ hai là chi phí tuyến đi/về (integer: 1000,2000,3000...)
* Khi một máy bay thực hiện chuyến đi và thực hiện chuyến về sẽ mất tổng chi phí là X.
* Cho số tự nhiên N. Khi X <= N và N - X là minimum thì chuyến đi/về được coi là tối ưu.
* Trả về tất cả các cặp số hiệu tuyến đi/về là tối ưu (format List<List<Integer>>)
-----------------
Để ae vui thì mình ko nêu lời giải :byebye:. Thực ra so với mấy bài test vui online thì mình thấy ko quá khó. Mỗi tội cái IDE online của nó cũng ko có auto import, auto complete, y như mấy trang online như hackerrank. Nói chung là bài 1 thì mình làm pass 9/10 test cases và bài 2 15/15 test cases, thừa 5 phút mãi ko nghĩ ra tại sao bài 1 fail test, xong rồi submit. Submit xong thì có câu hỏi giải thích về solution của mình và đánh giá time complexity. Lúc trả lời câu hỏi mình mới nhớ ra tại sao fail test case và ghi luôn vào phần trả lời lí do. Sau đấy có trắc nghiệm về tác phong làm việc = cách trả lời các câu hỏi tình huống với đáp án chung là mức độ đồng ý (5 mức: rất ko đồng ý, ko đồng ý, sao cũng đc, đồng ý, hoàn toàn đồng ý) với các tình huống mà nó đưa ra.:">
- Sau 3-4 ngày thì nhận mail thông báo đã pass vòng code test và mời sang Vancouver phỏng vấn luôn :adore:. Lúc đấy mừng quýnh, khoe khắp mọi nơi kể cả voz (xem post history sẽ thấy), cơ mà cũng nghĩ thấy quái quái vì quy trình của nó mình google ra là phải thêm 1-2 vòng phỏng vấn điện thoại nữa, nên là email hỏi lại cho rõ.


- Hóa ra là phải thêm vòng phỏng vấn điện thoại thật :sosad:. Với cả sau khi google thì phỏng vấn cho level 2 (SDE2) hỏi về technical design thấy có vẻ khó vkl ra :sweat:, kiểu như "thiết kế hệ thống payment của uber", nên là rén cực độ :sweat:. Thế nên hỏi lại bà nhân sự là thế có được down xuống apply cho level 1 không. Mấy hôm sau thì có hẹn gọi điện vs bà ý để nói về chuẩn bị cho pv. Bà ý nói là không down xuống được vì Amazon sẽ không giúp thủ tục hay trả toàn bộ chi phí relocation khi tuyển SDE1, cơ mà SDE2 thì CÓ!!! :adore:. Ngoài ra bà recruiter cũng rất ngon ngọt dỗ dành mình là đừng có lo, sợ là bình thường, tao tin mày sẽ làm đc blah blah... nói chung là cũng tạo ko khí dễ chịu và giúp mình tự tin hơn, ghi nhận.
- Sau khi đã chốt là ok tôi đồng ý pv điện thoại, thì được gửi 1 cái link set lịch. Bà recruiter nói là phải chọn lịch pv trong khoảng 10h - 16h PST. Tương đương với nó là 0h - 6h sáng giờ VN :sweat:. Thế là đành book mấy hôm lúc 0h lúc dự án vừa kết thúc 1 sprint hay ngày đầu sprint.
- Book xong thì 1 hôm sau nhận mail báo là nó pick ngày gần nhất có thể để pv. Ok fine



- Trong lúc chờ pv thì điên cuồng lên youtube tìm tài liệu, subscribe 1 số đồng chí nói về cách thiết kế hệ thống, v.v... Nói chung là chả đâu vào đâu.
- Đến hôm phỏng vấn vẫn phải cho con đi ngủ :canny: vì mẹ nó ko cho đi ngủ nổi. Tu 1 cốc cà phê rồi ngồi đợi.
- Đến giờ pv, ông pv vào cái live conference muộn 1 tí, tranh thủ setup cái điện thoại chĩa vào màn hình quay lại. Cuối cùng nghe đc mỗi tiếng mình, không dám setup loa ngoài vì sợ khó nghe, ko dám setup record màn hình sợ nó detect đc đánh trượt, đành vậy.
- Trong lúc pv: sau màn chào hỏi, ông ý nói sẽ có 3 phần: behavioral questions, technical design questions, và coding question.
- Behavioral: phần này cần bám sát các leadership principle của amazon. Đối với phỏng vấn điện thoại, bà recruiter nhắc từ trước là cần tập trung vào "Deliver Result" và "Earn trust". Cụ thể là mình sẽ được hỏi câu hỏi tình huống về kinh nghiệm trong quá khư và mình cần phải lái nó sao cho thể hiện được mình mang sẵn trong người các leadership principle của nó. Mình nhớ là được hỏi 3 câu:
+ Nói về 1 lần mà cậu bị chỉ trích. Cậu phản ứng như nào?
+ Nói về 1 lần mà cậu phải làm việc với rất nhiều áp lực. Cậu làm gì? như nào?
+ Nói về 1 lần cậu phạm sai lầm. Cậu xử lý như nào?
- Technical design: phần này dễ hơn tưởng tượng. Nói chung là ông ý đưa ra 1 use case đơn giản và phức tạp hóa dần lên, mình phải biến đổi cái thiết kế của mình để đáp ứng được các nhu cầu đấy. Mình nhớ được cụ thể như sau (có thể miss 1 vài câu):

-> tôi muốn upload được ảnh từ điện thoại, làm như nào
-> ảnh này upload lên cần share cho tất cả mọi người trong danh bạ, làm như nào
-> share cho chỉ những người dùng hệ thống này
-> ảnh này chỉ được share cho những người dùng ở châu Phi, làm như nào?
-> ở châu Phi mạng rất kém, muốn xem ảnh full resolution, làm như nào?
-> khi up ảnh lên cần thông báo cho tất cả ng dùng trong danh bạ mà có dùng hệ thống, làm như nào
-> Cơ chế thông báo, nếu ko dùng 3rd party, theo anh là gì?
-> Khi có rất rất nhiều người dùng hệ thống, tải của server có hạn, cần làm gì?
-> Giả sử việc up ảnh tốn rất nhiều thời gian và không xử lý được ngay khi tạo request up ảnh, hệ thống thì có nhiều người dùng với các tier khác nhau 1,2,3... Làm sao để đảm bảo người dùng tier cao hơn được xử lý việc up ảnh trước?

Chốt lại là mình ko cảm thấy response của ông ý có vẻ negative khi nhận các câu trả lời của mình khi ông ý cứ biến đổi tình huống. Kinh nghiệm là khả năng cao là yêu cầu ông ý đưa ra không rõ ràng hay sai (ví dụ ban đầu là upload ảnh và hệ thống "tự" biết là danh bạ ông ý có những ai để gửi ảnh cho họ, cần correct lại requirement - nói chung là giống như khi bạn đi họp và clear requirement với BA thôi)
- Coding question: lúc hỏi xong design thì ông ý bảo là phải đi họp đây, nhưng mà cậu thích thì tôi sẽ hỏi thêm coding, và nó không phải mục đích chính của buổi hôm nay. Lúc đấy mình cũng buồn ngủ lắm rồi (1h sáng) nhưng cũng nói cứng bảo cứ hỏi đi. Thế là ông ý cho bài tập, rồi bảo ko cần phải code đàng hoàng đâu, cứ nói cho tôi hướng giải. May mà hết giờ rồi chứ mình cũng hơi mụ mị rồi, lúc đấy chỉ nói được qua qua về hướng thôi. Bài tập là:
+ Cho 1 số A và 1 số B có cùng số chữ số. Có thể biến đổi số A thành số B từ từ bằng cách thay đổi 1 chữ số trong số A 1 đơn vị. Ví dụ: từ 321 thành 132, có thể đổi như sau:
321 -> 322 -> 332 -> 232 -> 132
+ Cho 1 list các số List<Integer> và 2 số A, B. A chỉ có thể biến đổi thành 1 số thuộc List đã cho. Trả về true/false xem với list đấy, có thể biến A thành B không.
Đang vừa nghĩ hướng giải vừa trình bày cho ông ý thì ông ý đi họp và cảm ơn các thứ.
------------
Phỏng vấn sáng t5, thì hôm nay tối thứ 2 mình nhận mail pass và sẽ được đi Vancouver 1 bữa!!
Phew! Tạm thời thế thôi, mình cũng ko trông đợi là lần đầu pv amazon mà pass luôn nhận luôn, tuy nhiên vẫn cố gằng hết sức thôi, càng đi xa càng vui. Nhất là giờ tự nhiên được đi du lịch miễn phí.
Sẽ update dần sau.
Nói chung là với ae developer mà muốn thoát thân thì mình chỉ biết nói là học giỏi ngoại ngữ vào, chăm 1 tí, cơ hội sẽ đến với các bạn, và đặc biệt là con của các bạn.

À mà mình cũng ko sợ lần này trượt, vì bọn như này nó ko phải là trượt 1 lần là thôi, mình có thể apply liên tục 6 tháng 1 lần. Lần này trượt thì mình có kn 6 tháng sau apply tiếp. Có thể vẫn là Amazon Vancouver, có thể là amazon chỗ khác, hay google microsoft gì đấy chẳng hạn. Ít ra amazon đã nhận CV của mình. Mình sẽ tự tin hơn apply chỗ khác

========================
EDIT: Nhiều bác hỏi kinh nghiệm học tiếng Anh quá. Mình trả lời chung luôn vậy: mình chả có kinh nghiệm gì cả. Tiếng Anh của mình là do quá trình tích lũy chơi game đọc truyện xem phim từ thời cấp 2, có lẽ là cộng với năng khiếu ngôn ngữ ở mức độ nhất định nữa.
Lên đại học mình có đi học thêm ở trung tâm nhưng trình cũng không thấy lên mấy. Xong rồi mình có 1 năm chỉ ngồi làm bài tập IELTS trong bộ chục quyển của cambridge ý, làm theo kiểu đọc hiểu các bài reading trong đấy. Có thể với nền tiếng Anh tích lũy từ nhỏ nên học kiểu đấy nó lên nhanh.
Lúc học xong ĐH thì để chuẩn bị đi du học, mình có đi học độ 4-5 tháng ở trung tâm. Nói chung là mình cảm giác nó giúp tổ chức lại mớ hổ lốn mình đã có sẵn trong đầu (nhờ quá trình tích lũy từ cấp 2 như trên). Lúc đấy thi IELTS Academic đc 7.5.
Trong quá trình học hay lúc mới đi làm cũng rảnh nên mình hay đọc truyện = tiếng Anh. Quyển đầu tiên mình đọc thì là Harry Potter tập 6. Hồi đi du học thì cũng chỉ có truyện tiếng Anh mà đọc, đọc Hunger games chẳng hạn. Có một đợt ngồi cày quyển Đồi Gió Hú tiếng Anh (đọc xong hoa cmn mắt).
Từ khi đi du học về thì mình cũng không dùng đến tiếng Anh speaking mấy, tuy nhiên vì làm dev nên tài liệu vẫn phải đọc liên tục nên không bị mất tiếp cận. Dạo gần đây thì mình hay xem các phim series như là Big Bang Theory (tuy nhiều khi chả hiểu gì).

Last Updated 17-09-2019 at 21:33
Tình hình là từ cuối tháng 7 mình có apply online vào amazon.jobs cho vị trí SDE2 ở Vancouver.


TLDR: vừa nhận mail báo amazon sẽ chu cấp cho mình sang pv onsite.

Dưới đây là giới thiệu sơ qua về bản thân và "hành trình" có được cơ hội này.

*** Về mình:
- 1 developer cũng gọi là tầm thường như bao developer khác :chaymau:. Học ĐTVT ra với kiến thức lập trình = 0. Đi du học học bổng Utachi ngành ĐTVT. Đến lúc học xong thì bị đẩy đi thực tập và bắt đầu làm lập trình từ lúc đấy (tháng 6/2013) bằng C và Java android.
- Tháng 3/2014 thì về VN, xin vào FSOFT với mức lương 6tr/th làm C++. Sau đấy với tiếng Anh xịn xò (7.5 IELTS từ hồi trc khi đi du học) được đẩy đi Nhật mấy tháng. Về nước thì lại làm java ở FPT mấy tháng rồi nhảy việc.:go:
- Nhảy việc sang 1 cty outsource khác lương cao hơn khá nhiều so vs FSOFT, chủ yểu làm Java, có tí Python. Vẫn đang làm đến giờ.
- Trong quá trình đi làm thì mình thỉnh thoảng cũng học thêm các thứ về cấu trúc dữ liệu và giải thuật, functional programming. Cụ thể là khóa Algorithm Part 1/2 và Functional programming with Scala trên coursera.org là 2 khóa đóng góp nhiều nhất. Ngoài ra thì sách vở down lung tung về đọc.:byebye:.
- Trong mấy năm vừa rồi thì cứ 2 năm mình lại thi IELTS 1 nhát, được 2 lần 8.0 năm 2016 và 2018 (EDIT: cũng chả ôn luyện gì đâu, vợ con rồi mà. Cứ đến ngày đi thi thôi. Tại level tiếng Anh của mình nó ở sẵn đấy rồi mà vẫn dùng liên tục nên ko bị chột đi, với cả mình thi General. Lần cuối thì academic là để du học 2012)

*** Về câu chuyện giữa Amazon và mình:

- Vì thấy chán chán VN nên cũng từ lâu ngó thử Canada với chính sách mở cửa của nó. Vấn đề là sau khi tìm hiểu thì có vẻ sang mà chưa có việc thì dễ nhưng kiếm việc rồi ở lại mới khó. Mình lại vợ con rồi, đi kiểu đấy quá rủi ro. Thôi thì kiếm ai nhận mình trước. Mà như vậy thì chỉ có mấy cty lớn. Sẵn tiện 2 năm gần đây đang học technology stack của AWS, ngó thử Amazon.
- Tìm thấy tin đăng tuyển trên web của nó cho SDE 2 cho Amazon Connect, cùng với check list mấy cái kỹ năng cần thiết. Sau khi tick thấy mình có vẻ đủ đk, quăng đại cái CV vào và cũng ko nghĩ gì nhiều :stick:
- First contact: 26/7/2019 mình nhận mail từ 1 Technical recruiter của Amazon, nói là CV của mình pass screening, và gửi link online code assessment. Link có hiệu lực 1 tuần. Gửi kèm là 1 lô các kiến thức mình nên ôn lại và các trang web hữu ích. Đọc mail bắt đầu rén tại vì có chuẩn bị quái gì đâu :sosad:. Thế là bắt đầu điên cuồng học ôn. Tất nhiên là vẫn phải đi làm ngày 8h, tối về đón con, trông con và cho nó ngủ, rửa bát nữa, thỉnh thoảng bật game lên chơi.:">


- Còn 10h thì hết hạn bài test và mình bắt đầu làm (sau khi cho con bé con đi ngủ :byebye:). Có 2 bài làm trong 90 phút. Đề bài = tiếng Anh. Tóm tắt đề bài là như này:
UPDATE:
Bài 1:
https://www.geeksforgeeks.org/optimal-file-merge-patterns/
Bài 2:
https://aonecode.com/aplusplus/interviewctrl/getInterview/5321399161390068223
---------
+ Bài 1: có danh sách các file với độ lớn của file được thể hiện = số integer (input List<Integer>). Cần merge các file lại thành 1 file cuối cùng với quy luật như sau:
* merge được 2 file 1 lần.
* chi phí mỗi lần merge bằng tổng kích thước 2 file
* file sau khi merge bằng tổng kích thước 2 file
-> tìm chi phí nhỏ nhất để merge tất cả các file.
--------
+ Bài 2: 1 hãng vận tải có danh sách các tuyến bay đi và về. Danh sách tuyến bay được thể hiện = 1 List<List<Integer>>. Trong đó, mỗi List<Integer> thuộc List to có 2 phần tử: phần tử thứ nhất là số hiệu tuyến đi/về (integer: 1,2,3...) | phần tử thứ hai là chi phí tuyến đi/về (integer: 1000,2000,3000...)
* Khi một máy bay thực hiện chuyến đi và thực hiện chuyến về sẽ mất tổng chi phí là X.
* Cho số tự nhiên N. Khi X <= N và N - X là minimum thì chuyến đi/về được coi là tối ưu.
* Trả về tất cả các cặp số hiệu tuyến đi/về là tối ưu (format List<List<Integer>>)
-----------------
Để ae vui thì mình ko nêu lời giải :byebye:. Thực ra so với mấy bài test vui online thì mình thấy ko quá khó. Mỗi tội cái IDE online của nó cũng ko có auto import, auto complete, y như mấy trang online như hackerrank. Nói chung là bài 1 thì mình làm pass 9/10 test cases và bài 2 15/15 test cases, thừa 5 phút mãi ko nghĩ ra tại sao bài 1 fail test, xong rồi submit. Submit xong thì có câu hỏi giải thích về solution của mình và đánh giá time complexity. Lúc trả lời câu hỏi mình mới nhớ ra tại sao fail test case và ghi luôn vào phần trả lời lí do. Sau đấy có trắc nghiệm về tác phong làm việc = cách trả lời các câu hỏi tình huống với đáp án chung là mức độ đồng ý (5 mức: rất ko đồng ý, ko đồng ý, sao cũng đc, đồng ý, hoàn toàn đồng ý) với các tình huống mà nó đưa ra.:">
- Sau 3-4 ngày thì nhận mail thông báo đã pass vòng code test và mời sang Vancouver phỏng vấn luôn :adore:. Lúc đấy mừng quýnh, khoe khắp mọi nơi kể cả voz (xem post history sẽ thấy), cơ mà cũng nghĩ thấy quái quái vì quy trình của nó mình google ra là phải thêm 1-2 vòng phỏng vấn điện thoại nữa, nên là email hỏi lại cho rõ.


- Hóa ra là phải thêm vòng phỏng vấn điện thoại thật :sosad:. Với cả sau khi google thì phỏng vấn cho level 2 (SDE2) hỏi về technical design thấy có vẻ khó vkl ra :sweat:, kiểu như "thiết kế hệ thống payment của uber", nên là rén cực độ :sweat:. Thế nên hỏi lại bà nhân sự là thế có được down xuống apply cho level 1 không. Mấy hôm sau thì có hẹn gọi điện vs bà ý để nói về chuẩn bị cho pv. Bà ý nói là không down xuống được vì Amazon sẽ không giúp thủ tục hay trả toàn bộ chi phí relocation khi tuyển SDE1, cơ mà SDE2 thì CÓ!!! :adore:. Ngoài ra bà recruiter cũng rất ngon ngọt dỗ dành mình là đừng có lo, sợ là bình thường, tao tin mày sẽ làm đc blah blah... nói chung là cũng tạo ko khí dễ chịu và giúp mình tự tin hơn, ghi nhận.
- Sau khi đã chốt là ok tôi đồng ý pv điện thoại, thì được gửi 1 cái link set lịch. Bà recruiter nói là phải chọn lịch pv trong khoảng 10h - 16h PST. Tương đương với nó là 0h - 6h sáng giờ VN :sweat:. Thế là đành book mấy hôm lúc 0h lúc dự án vừa kết thúc 1 sprint hay ngày đầu sprint.
- Book xong thì 1 hôm sau nhận mail báo là nó pick ngày gần nhất có thể để pv. Ok fine



- Trong lúc chờ pv thì điên cuồng lên youtube tìm tài liệu, subscribe 1 số đồng chí nói về cách thiết kế hệ thống, v.v... Nói chung là chả đâu vào đâu.
- Đến hôm phỏng vấn vẫn phải cho con đi ngủ :canny: vì mẹ nó ko cho đi ngủ nổi. Tu 1 cốc cà phê rồi ngồi đợi.
- Đến giờ pv, ông pv vào cái live conference muộn 1 tí, tranh thủ setup cái điện thoại chĩa vào màn hình quay lại. Cuối cùng nghe đc mỗi tiếng mình, không dám setup loa ngoài vì sợ khó nghe, ko dám setup record màn hình sợ nó detect đc đánh trượt, đành vậy.
- Trong lúc pv: sau màn chào hỏi, ông ý nói sẽ có 3 phần: behavioral questions, technical design questions, và coding question.
- Behavioral: phần này cần bám sát các leadership principle của amazon. Đối với phỏng vấn điện thoại, bà recruiter nhắc từ trước là cần tập trung vào "Deliver Result" và "Earn trust". Cụ thể là mình sẽ được hỏi câu hỏi tình huống về kinh nghiệm trong quá khư và mình cần phải lái nó sao cho thể hiện được mình mang sẵn trong người các leadership principle của nó. Mình nhớ là được hỏi 3 câu:
+ Nói về 1 lần mà cậu bị chỉ trích. Cậu phản ứng như nào?
+ Nói về 1 lần mà cậu phải làm việc với rất nhiều áp lực. Cậu làm gì? như nào?
+ Nói về 1 lần cậu phạm sai lầm. Cậu xử lý như nào?
- Technical design: phần này dễ hơn tưởng tượng. Nói chung là ông ý đưa ra 1 use case đơn giản và phức tạp hóa dần lên, mình phải biến đổi cái thiết kế của mình để đáp ứng được các nhu cầu đấy. Mình nhớ được cụ thể như sau (có thể miss 1 vài câu):

-> tôi muốn upload được ảnh từ điện thoại, làm như nào
-> ảnh này upload lên cần share cho tất cả mọi người trong danh bạ, làm như nào
-> share cho chỉ những người dùng hệ thống này
-> ảnh này chỉ được share cho những người dùng ở châu Phi, làm như nào?
-> ở châu Phi mạng rất kém, muốn xem ảnh full resolution, làm như nào?
-> khi up ảnh lên cần thông báo cho tất cả ng dùng trong danh bạ mà có dùng hệ thống, làm như nào
-> Cơ chế thông báo, nếu ko dùng 3rd party, theo anh là gì?
-> Khi có rất rất nhiều người dùng hệ thống, tải của server có hạn, cần làm gì?
-> Giả sử việc up ảnh tốn rất nhiều thời gian và không xử lý được ngay khi tạo request up ảnh, hệ thống thì có nhiều người dùng với các tier khác nhau 1,2,3... Làm sao để đảm bảo người dùng tier cao hơn được xử lý việc up ảnh trước?

Chốt lại là mình ko cảm thấy response của ông ý có vẻ negative khi nhận các câu trả lời của mình khi ông ý cứ biến đổi tình huống. Kinh nghiệm là khả năng cao là yêu cầu ông ý đưa ra không rõ ràng hay sai (ví dụ ban đầu là upload ảnh và hệ thống "tự" biết là danh bạ ông ý có những ai để gửi ảnh cho họ, cần correct lại requirement - nói chung là giống như khi bạn đi họp và clear requirement với BA thôi)
- Coding question: lúc hỏi xong design thì ông ý bảo là phải đi họp đây, nhưng mà cậu thích thì tôi sẽ hỏi thêm coding, và nó không phải mục đích chính của buổi hôm nay. Lúc đấy mình cũng buồn ngủ lắm rồi (1h sáng) nhưng cũng nói cứng bảo cứ hỏi đi. Thế là ông ý cho bài tập, rồi bảo ko cần phải code đàng hoàng đâu, cứ nói cho tôi hướng giải. May mà hết giờ rồi chứ mình cũng hơi mụ mị rồi, lúc đấy chỉ nói được qua qua về hướng thôi. Bài tập là:
+ Cho 1 số A và 1 số B có cùng số chữ số. Có thể biến đổi số A thành số B từ từ bằng cách thay đổi 1 chữ số trong số A 1 đơn vị. Ví dụ: từ 321 thành 132, có thể đổi như sau:
321 -> 322 -> 332 -> 232 -> 132
+ Cho 1 list các số List<Integer> và 2 số A, B. A chỉ có thể biến đổi thành 1 số thuộc List đã cho. Trả về true/false xem với list đấy, có thể biến A thành B không.
Đang vừa nghĩ hướng giải vừa trình bày cho ông ý thì ông ý đi họp và cảm ơn các thứ.
------------
Phỏng vấn sáng t5, thì hôm nay tối thứ 2 mình nhận mail pass và sẽ được đi Vancouver 1 bữa!!
Phew! Tạm thời thế thôi, mình cũng ko trông đợi là lần đầu pv amazon mà pass luôn nhận luôn, tuy nhiên vẫn cố gằng hết sức thôi, càng đi xa càng vui. Nhất là giờ tự nhiên được đi du lịch miễn phí.
Sẽ update dần sau.
Nói chung là với ae developer mà muốn thoát thân thì mình chỉ biết nói là học giỏi ngoại ngữ vào, chăm 1 tí, cơ hội sẽ đến với các bạn, và đặc biệt là con của các bạn.

À mà mình cũng ko sợ lần này trượt, vì bọn như này nó ko phải là trượt 1 lần là thôi, mình có thể apply liên tục 6 tháng 1 lần. Lần này trượt thì mình có kn 6 tháng sau apply tiếp. Có thể vẫn là Amazon Vancouver, có thể là amazon chỗ khác, hay google microsoft gì đấy chẳng hạn. Ít ra amazon đã nhận CV của mình. Mình sẽ tự tin hơn apply chỗ khác

========================
EDIT: Nhiều bác hỏi kinh nghiệm học tiếng Anh quá. Mình trả lời chung luôn vậy: mình chả có kinh nghiệm gì cả. Tiếng Anh của mình là do quá trình tích lũy chơi game đọc truyện xem phim từ thời cấp 2, có lẽ là cộng với năng khiếu ngôn ngữ ở mức độ nhất định nữa.
Lên đại học mình có đi học thêm ở trung tâm nhưng trình cũng không thấy lên mấy. Xong rồi mình có 1 năm chỉ ngồi làm bài tập IELTS trong bộ chục quyển của cambridge ý, làm theo kiểu đọc hiểu các bài reading trong đấy. Có thể với nền tiếng Anh tích lũy từ nhỏ nên học kiểu đấy nó lên nhanh.
Lúc học xong ĐH thì để chuẩn bị đi du học, mình có đi học độ 4-5 tháng ở trung tâm. Nói chung là mình cảm giác nó giúp tổ chức lại mớ hổ lốn mình đã có sẵn trong đầu (nhờ quá trình tích lũy từ cấp 2 như trên). Lúc đấy thi IELTS Academic đc 7.5.
Trong quá trình học hay lúc mới đi làm cũng rảnh nên mình hay đọc truyện = tiếng Anh. Quyển đầu tiên mình đọc thì là Harry Potter tập 6. Hồi đi du học thì cũng chỉ có truyện tiếng Anh mà đọc, đọc Hunger games chẳng hạn. Có một đợt ngồi cày quyển Đồi Gió Hú tiếng Anh (đọc xong hoa cmn mắt).
Từ khi đi du học về thì mình cũng không dùng đến tiếng Anh speaking mấy, tuy nhiên vì làm dev nên tài liệu vẫn phải đọc liên tục nên không bị mất tiếp cận. Dạo gần đây thì mình hay xem các phim series như là Big Bang Theory (tuy nhiều khi chả hiểu gì).

Last Updated 17-09-2019 at 19:13
Tình hình là từ cuối tháng 7 mình có apply online vào amazon.jobs cho vị trí SDE2 ở Vancouver.


TLDR: vừa nhận mail báo amazon sẽ chu cấp cho mình sang pv onsite.

Dưới đây là giới thiệu sơ qua về bản thân và "hành trình" có được cơ hội này.

*** Về mình:
- 1 developer cũng gọi là tầm thường như bao developer khác :chaymau:. Học ĐTVT ra với kiến thức lập trình = 0. Đi du học học bổng Utachi ngành ĐTVT. Đến lúc học xong thì bị đẩy đi thực tập và bắt đầu làm lập trình từ lúc đấy (tháng 6/2013) bằng C và Java android.
- Tháng 3/2014 thì về VN, xin vào FSOFT với mức lương 6tr/th làm C++. Sau đấy với tiếng Anh xịn xò (7.5 IELTS từ hồi trc khi đi du học) được đẩy đi Nhật mấy tháng. Về nước thì lại làm java ở FPT mấy tháng rồi nhảy việc.:go:
- Nhảy việc sang 1 cty outsource khác lương cao hơn khá nhiều so vs FSOFT, chủ yểu làm Java, có tí Python. Vẫn đang làm đến giờ.
- Trong quá trình đi làm thì mình thỉnh thoảng cũng học thêm các thứ về cấu trúc dữ liệu và giải thuật, functional programming. Cụ thể là khóa Algorithm Part 1/2 và Functional programming with Scala trên coursera.org là 2 khóa đóng góp nhiều nhất. Ngoài ra thì sách vở down lung tung về đọc.:byebye:.
- Trong mấy năm vừa rồi thì cứ 2 năm mình lại thi IELTS 1 nhát, được 2 lần 8.0

*** Về câu chuyện giữa Amazon và mình:

- Vì thấy chán chán VN nên cũng từ lâu ngó thử Canada với chính sách mở cửa của nó. Vấn đề là sau khi tìm hiểu thì có vẻ sang mà chưa có việc thì dễ nhưng kiếm việc rồi ở lại mới khó. Mình lại vợ con rồi, đi kiểu đấy quá rủi ro. Thôi thì kiếm ai nhận mình trước. Mà như vậy thì chỉ có mấy cty lớn. Sẵn tiện 2 năm gần đây đang học technology stack của AWS, ngó thử Amazon.
- Tìm thấy tin đăng tuyển trên web của nó cho SDE 2 cho Amazon Connect, cùng với check list mấy cái kỹ năng cần thiết. Sau khi tick thấy mình có vẻ đủ đk, quăng đại cái CV vào và cũng ko nghĩ gì nhiều :stick:
- First contact: 26/7/2019 mình nhận mail từ 1 Technical recruiter của Amazon, nói là CV của mình pass screening, và gửi link online code assessment. Link có hiệu lực 1 tuần. Gửi kèm là 1 lô các kiến thức mình nên ôn lại và các trang web hữu ích. Đọc mail bắt đầu rén tại vì có chuẩn bị quái gì đâu :sosad:. Thế là bắt đầu điên cuồng học ôn. Tất nhiên là vẫn phải đi làm ngày 8h, tối về đón con, trông con và cho nó ngủ, rửa bát nữa, thỉnh thoảng bật game lên chơi.:">


- Còn 10h thì hết hạn bài test và mình bắt đầu làm (sau khi cho con bé con đi ngủ :byebye:). Có 2 bài làm trong 90 phút. Đề bài = tiếng Anh. Tóm tắt đề bài là như này:
UPDATE:
Bài 1:
https://www.geeksforgeeks.org/optimal-file-merge-patterns/
Bài 2:
https://aonecode.com/aplusplus/interviewctrl/getInterview/5321399161390068223
---------
+ Bài 1: có danh sách các file với độ lớn của file được thể hiện = số integer (input List<Integer>). Cần merge các file lại thành 1 file cuối cùng với quy luật như sau:
* merge được 2 file 1 lần.
* chi phí mỗi lần merge bằng tổng kích thước 2 file
* file sau khi merge bằng tổng kích thước 2 file
-> tìm chi phí nhỏ nhất để merge tất cả các file.
--------
+ Bài 2: 1 hãng vận tải có danh sách các tuyến bay đi và về. Danh sách tuyến bay được thể hiện = 1 List<List<Integer>>. Trong đó, mỗi List<Integer> thuộc List to có 2 phần tử: phần tử thứ nhất là số hiệu tuyến đi/về (integer: 1,2,3...) | phần tử thứ hai là chi phí tuyến đi/về (integer: 1000,2000,3000...)
* Khi một máy bay thực hiện chuyến đi và thực hiện chuyến về sẽ mất tổng chi phí là X.
* Cho số tự nhiên N. Khi X <= N và N - X là minimum thì chuyến đi/về được coi là tối ưu.
* Trả về tất cả các cặp số hiệu tuyến đi/về là tối ưu (format List<List<Integer>>)
-----------------
Để ae vui thì mình ko nêu lời giải :byebye:. Thực ra so với mấy bài test vui online thì mình thấy ko quá khó. Mỗi tội cái IDE online của nó cũng ko có auto import, auto complete, y như mấy trang online như hackerrank. Nói chung là bài 1 thì mình làm pass 9/10 test cases và bài 2 15/15 test cases, thừa 5 phút mãi ko nghĩ ra tại sao bài 1 fail test, xong rồi submit. Submit xong thì có câu hỏi giải thích về solution của mình và đánh giá time complexity. Lúc trả lời câu hỏi mình mới nhớ ra tại sao fail test case và ghi luôn vào phần trả lời lí do. Sau đấy có trắc nghiệm về tác phong làm việc = cách trả lời các câu hỏi tình huống với đáp án chung là mức độ đồng ý (5 mức: rất ko đồng ý, ko đồng ý, sao cũng đc, đồng ý, hoàn toàn đồng ý) với các tình huống mà nó đưa ra.:">
- Sau 3-4 ngày thì nhận mail thông báo đã pass vòng code test và mời sang Vancouver phỏng vấn luôn :adore:. Lúc đấy mừng quýnh, khoe khắp mọi nơi kể cả voz (xem post history sẽ thấy), cơ mà cũng nghĩ thấy quái quái vì quy trình của nó mình google ra là phải thêm 1-2 vòng phỏng vấn điện thoại nữa, nên là email hỏi lại cho rõ.


- Hóa ra là phải thêm vòng phỏng vấn điện thoại thật :sosad:. Với cả sau khi google thì phỏng vấn cho level 2 (SDE2) hỏi về technical design thấy có vẻ khó vkl ra :sweat:, kiểu như "thiết kế hệ thống payment của uber", nên là rén cực độ :sweat:. Thế nên hỏi lại bà nhân sự là thế có được down xuống apply cho level 1 không. Mấy hôm sau thì có hẹn gọi điện vs bà ý để nói về chuẩn bị cho pv. Bà ý nói là không down xuống được vì Amazon sẽ không giúp thủ tục hay trả toàn bộ chi phí relocation khi tuyển SDE1, cơ mà SDE2 thì CÓ!!! :adore:. Ngoài ra bà recruiter cũng rất ngon ngọt dỗ dành mình là đừng có lo, sợ là bình thường, tao tin mày sẽ làm đc blah blah... nói chung là cũng tạo ko khí dễ chịu và giúp mình tự tin hơn, ghi nhận.
- Sau khi đã chốt là ok tôi đồng ý pv điện thoại, thì được gửi 1 cái link set lịch. Bà recruiter nói là phải chọn lịch pv trong khoảng 10h - 16h PST. Tương đương với nó là 0h - 6h sáng giờ VN :sweat:. Thế là đành book mấy hôm lúc 0h lúc dự án vừa kết thúc 1 sprint hay ngày đầu sprint.
- Book xong thì 1 hôm sau nhận mail báo là nó pick ngày gần nhất có thể để pv. Ok fine



- Trong lúc chờ pv thì điên cuồng lên youtube tìm tài liệu, subscribe 1 số đồng chí nói về cách thiết kế hệ thống, v.v... Nói chung là chả đâu vào đâu.
- Đến hôm phỏng vấn vẫn phải cho con đi ngủ :canny: vì mẹ nó ko cho đi ngủ nổi. Tu 1 cốc cà phê rồi ngồi đợi.
- Đến giờ pv, ông pv vào cái live conference muộn 1 tí, tranh thủ setup cái điện thoại chĩa vào màn hình quay lại. Cuối cùng nghe đc mỗi tiếng mình, không dám setup loa ngoài vì sợ khó nghe, ko dám setup record màn hình sợ nó detect đc đánh trượt, đành vậy.
- Trong lúc pv: sau màn chào hỏi, ông ý nói sẽ có 3 phần: behavioral questions, technical design questions, và coding question.
- Behavioral: phần này cần bám sát các leadership principle của amazon. Đối với phỏng vấn điện thoại, bà recruiter nhắc từ trước là cần tập trung vào "Deliver Result" và "Earn trust". Cụ thể là mình sẽ được hỏi câu hỏi tình huống về kinh nghiệm trong quá khư và mình cần phải lái nó sao cho thể hiện được mình mang sẵn trong người các leadership principle của nó. Mình nhớ là được hỏi 3 câu:
+ Nói về 1 lần mà cậu bị chỉ trích. Cậu phản ứng như nào?
+ Nói về 1 lần mà cậu phải làm việc với rất nhiều áp lực. Cậu làm gì? như nào?
+ Nói về 1 lần cậu phạm sai lầm. Cậu xử lý như nào?
- Technical design: phần này dễ hơn tưởng tượng. Nói chung là ông ý đưa ra 1 use case đơn giản và phức tạp hóa dần lên, mình phải biến đổi cái thiết kế của mình để đáp ứng được các nhu cầu đấy. Mình nhớ được cụ thể như sau (có thể miss 1 vài câu):

-> tôi muốn upload được ảnh từ điện thoại, làm như nào
-> ảnh này upload lên cần share cho tất cả mọi người trong danh bạ, làm như nào
-> share cho chỉ những người dùng hệ thống này
-> ảnh này chỉ được share cho những người dùng ở châu Phi, làm như nào?
-> ở châu Phi mạng rất kém, muốn xem ảnh full resolution, làm như nào?
-> khi up ảnh lên cần thông báo cho tất cả ng dùng trong danh bạ mà có dùng hệ thống, làm như nào
-> Cơ chế thông báo, nếu ko dùng 3rd party, theo anh là gì?
-> Khi có rất rất nhiều người dùng hệ thống, tải của server có hạn, cần làm gì?
-> Giả sử việc up ảnh tốn rất nhiều thời gian và không xử lý được ngay khi tạo request up ảnh, hệ thống thì có nhiều người dùng với các tier khác nhau 1,2,3... Làm sao để đảm bảo người dùng tier cao hơn được xử lý việc up ảnh trước?

Chốt lại là mình ko cảm thấy response của ông ý có vẻ negative khi nhận các câu trả lời của mình khi ông ý cứ biến đổi tình huống. Kinh nghiệm là khả năng cao là yêu cầu ông ý đưa ra không rõ ràng hay sai (ví dụ ban đầu là upload ảnh và hệ thống "tự" biết là danh bạ ông ý có những ai để gửi ảnh cho họ, cần correct lại requirement - nói chung là giống như khi bạn đi họp và clear requirement với BA thôi)
- Coding question: lúc hỏi xong design thì ông ý bảo là phải đi họp đây, nhưng mà cậu thích thì tôi sẽ hỏi thêm coding, và nó không phải mục đích chính của buổi hôm nay. Lúc đấy mình cũng buồn ngủ lắm rồi (1h sáng) nhưng cũng nói cứng bảo cứ hỏi đi. Thế là ông ý cho bài tập, rồi bảo ko cần phải code đàng hoàng đâu, cứ nói cho tôi hướng giải. May mà hết giờ rồi chứ mình cũng hơi mụ mị rồi, lúc đấy chỉ nói được qua qua về hướng thôi. Bài tập là:
+ Cho 1 số A và 1 số B có cùng số chữ số. Có thể biến đổi số A thành số B từ từ bằng cách thay đổi 1 chữ số trong số A 1 đơn vị. Ví dụ: từ 321 thành 132, có thể đổi như sau:
321 -> 322 -> 332 -> 232 -> 132
+ Cho 1 list các số List<Integer> và 2 số A, B. A chỉ có thể biến đổi thành 1 số thuộc List đã cho. Trả về true/false xem với list đấy, có thể biến A thành B không.
Đang vừa nghĩ hướng giải vừa trình bày cho ông ý thì ông ý đi họp và cảm ơn các thứ.
------------
Phỏng vấn sáng t5, thì hôm nay tối thứ 2 mình nhận mail pass và sẽ được đi Vancouver 1 bữa!!
Phew! Tạm thời thế thôi, mình cũng ko trông đợi là lần đầu pv amazon mà pass luôn nhận luôn, tuy nhiên vẫn cố gằng hết sức thôi, càng đi xa càng vui. Nhất là giờ tự nhiên được đi du lịch miễn phí.
Sẽ update dần sau.
Nói chung là với ae developer mà muốn thoát thân thì mình chỉ biết nói là học giỏi ngoại ngữ vào, chăm 1 tí, cơ hội sẽ đến với các bạn, và đặc biệt là con của các bạn.

À mà mình cũng ko sợ lần này trượt, vì bọn như này nó ko phải là trượt 1 lần là thôi, mình có thể apply liên tục 6 tháng 1 lần. Lần này trượt thì mình có kn 6 tháng sau apply tiếp. Có thể vẫn là Amazon Vancouver, có thể là amazon chỗ khác, hay google microsoft gì đấy chẳng hạn. Ít ra amazon đã nhận CV của mình. Mình sẽ tự tin hơn apply chỗ khác

========================
EDIT: Nhiều bác hỏi kinh nghiệm học tiếng Anh quá. Mình trả lời chung luôn vậy: mình chả có kinh nghiệm gì cả. Tiếng Anh của mình là do quá trình tích lũy chơi game đọc truyện xem phim từ thời cấp 2, có lẽ là cộng với năng khiếu ngôn ngữ ở mức độ nhất định nữa.
Lên đại học mình có đi học thêm ở trung tâm nhưng trình cũng không thấy lên mấy. Xong rồi mình có 1 năm chỉ ngồi làm bài tập IELTS trong bộ chục quyển của cambridge ý, làm theo kiểu đọc hiểu các bài reading trong đấy. Có thể với nền tiếng Anh tích lũy từ nhỏ nên học kiểu đấy nó lên nhanh.
Lúc học xong ĐH thì để chuẩn bị đi du học, mình có đi học độ 4-5 tháng ở trung tâm. Nói chung là mình cảm giác nó giúp tổ chức lại mớ hổ lốn mình đã có sẵn trong đầu (nhờ quá trình tích lũy từ cấp 2 như trên). Lúc đấy thi IELTS Academic đc 7.5.
Trong quá trình học hay lúc mới đi làm cũng rảnh nên mình hay đọc truyện = tiếng Anh. Quyển đầu tiên mình đọc thì là Harry Potter tập 6. Hồi đi du học thì cũng chỉ có truyện tiếng Anh mà đọc, đọc Hunger games chẳng hạn. Có một đợt ngồi cày quyển Đồi Gió Hú tiếng Anh (đọc xong hoa cmn mắt).
Từ khi đi du học về thì mình cũng không dùng đến tiếng Anh speaking mấy, tuy nhiên vì làm dev nên tài liệu vẫn phải đọc liên tục nên không bị mất tiếp cận. Dạo gần đây thì mình hay xem các phim series như là Big Bang Theory (tuy nhiều khi chả hiểu gì).

Last Updated 17-09-2019 at 15:55
Tình hình là từ cuối tháng 7 mình có apply online vào amazon.jobs cho vị trí SDE2 ở Vancouver.


TLDR: vừa nhận mail báo amazon sẽ chu cấp cho mình sang pv onsite.

Dưới đây là giới thiệu sơ qua về bản thân và "hành trình" có được cơ hội này.

*** Về mình:
- 1 developer cũng gọi là tầm thường như bao developer khác :chaymau:. Học ĐTVT ra với kiến thức lập trình = 0. Đi du học học bổng Utachi ngành ĐTVT. Đến lúc học xong thì bị đẩy đi thực tập và bắt đầu làm lập trình từ lúc đấy (tháng 6/2013) bằng C và Java android.
- Tháng 3/2014 thì về VN, xin vào FSOFT với mức lương 6tr/th làm C++. Sau đấy với tiếng Anh xịn xò (7.5 IELTS từ hồi trc khi đi du học) được đẩy đi Nhật mấy tháng. Về nước thì lại làm java ở FPT mấy tháng rồi nhảy việc.:go:
- Nhảy việc sang 1 cty outsource khác lương cao hơn khá nhiều so vs FSOFT, chủ yểu làm Java, có tí Python. Vẫn đang làm đến giờ.
- Trong quá trình đi làm thì mình thỉnh thoảng cũng học thêm các thứ về cấu trúc dữ liệu và giải thuật, functional programming. Cụ thể là khóa Algorithm Part 1/2 và Functional programming with Scala trên coursera.org là 2 khóa đóng góp nhiều nhất. Ngoài ra thì sách vở down lung tung về đọc.:byebye:.
- Trong mấy năm vừa rồi thì cứ 2 năm mình lại thi IELTS 1 nhát, được 2 lần 8.0

*** Về câu chuyện giữa Amazon và mình:

- Vì thấy chán chán VN nên cũng từ lâu ngó thử Canada với chính sách mở cửa của nó. Vấn đề là sau khi tìm hiểu thì có vẻ sang mà chưa có việc thì dễ nhưng kiếm việc rồi ở lại mới khó. Mình lại vợ con rồi, đi kiểu đấy quá rủi ro. Thôi thì kiếm ai nhận mình trước. Mà như vậy thì chỉ có mấy cty lớn. Sẵn tiện 2 năm gần đây đang học technology stack của AWS, ngó thử Amazon.
- Tìm thấy tin đăng tuyển trên web của nó cho SDE 2 cho Amazon Connect, cùng với check list mấy cái kỹ năng cần thiết. Sau khi tick thấy mình có vẻ đủ đk, quăng đại cái CV vào và cũng ko nghĩ gì nhiều :stick:
- First contact: 26/7/2019 mình nhận mail từ 1 Technical recruiter của Amazon, nói là CV của mình pass screening, và gửi link online code assessment. Link có hiệu lực 1 tuần. Gửi kèm là 1 lô các kiến thức mình nên ôn lại và các trang web hữu ích. Đọc mail bắt đầu rén tại vì có chuẩn bị quái gì đâu :sosad:. Thế là bắt đầu điên cuồng học ôn. Tất nhiên là vẫn phải đi làm ngày 8h, tối về đón con, trông con và cho nó ngủ, rửa bát nữa, thỉnh thoảng bật game lên chơi.:">


- Còn 10h thì hết hạn bài test và mình bắt đầu làm (sau khi cho con bé con đi ngủ :byebye:). Có 2 bài làm trong 90 phút. Đề bài = tiếng Anh. Tóm tắt đề bài là như này:
---------
+ Bài 1: có danh sách các file với độ lớn của file được thể hiện = số integer (input List<Integer>). Cần merge các file lại thành 1 file cuối cùng với quy luật như sau:
* merge được 2 file 1 lần.
* chi phí mỗi lần merge bằng tổng kích thước 2 file
* file sau khi merge bằng tổng kích thước 2 file
-> tìm chi phí nhỏ nhất để merge tất cả các file.
--------
+ Bài 2: 1 hãng vận tải có danh sách các tuyến bay đi và về. Danh sách tuyến bay được thể hiện = 1 List<List<Integer>>. Trong đó, mỗi List<Integer> thuộc List to có 2 phần tử: phần tử thứ nhất là số hiệu tuyến đi/về (integer: 1,2,3...) | phần tử thứ hai là chi phí tuyến đi/về (integer: 1000,2000,3000...)
* Khi một máy bay thực hiện chuyến đi và thực hiện chuyến về sẽ mất tổng chi phí là X.
* Cho số tự nhiên N. Khi X <= N và N - X là minimum thì chuyến đi/về được coi là tối ưu.
* Trả về tất cả các cặp số hiệu tuyến đi/về là tối ưu (format List<List<Integer>>)
-----------------
Để ae vui thì mình ko nêu lời giải :byebye:. Thực ra so với mấy bài test vui online thì mình thấy ko quá khó. Mỗi tội cái IDE online của nó cũng ko có auto import, auto complete, y như mấy trang online như hackerrank. Nói chung là bài 1 thì mình làm pass 9/10 test cases và bài 2 15/15 test cases, thừa 5 phút mãi ko nghĩ ra tại sao bài 1 fail test, xong rồi submit. Submit xong thì có câu hỏi giải thích về solution của mình và đánh giá time complexity. Lúc trả lời câu hỏi mình mới nhớ ra tại sao fail test case và ghi luôn vào phần trả lời lí do. Sau đấy có trắc nghiệm về tác phong làm việc = cách trả lời các câu hỏi tình huống với đáp án chung là mức độ đồng ý (5 mức: rất ko đồng ý, ko đồng ý, sao cũng đc, đồng ý, hoàn toàn đồng ý) với các tình huống mà nó đưa ra.:">
- Sau 3-4 ngày thì nhận mail thông báo đã pass vòng code test và mời sang Vancouver phỏng vấn luôn :adore:. Lúc đấy mừng quýnh, khoe khắp mọi nơi kể cả voz (xem post history sẽ thấy), cơ mà cũng nghĩ thấy quái quái vì quy trình của nó mình google ra là phải thêm 1-2 vòng phỏng vấn điện thoại nữa, nên là email hỏi lại cho rõ.


- Hóa ra là phải thêm vòng phỏng vấn điện thoại thật :sosad:. Với cả sau khi google thì phỏng vấn cho level 2 (SDE2) hỏi về technical design thấy có vẻ khó vkl ra :sweat:, kiểu như "thiết kế hệ thống payment của uber", nên là rén cực độ :sweat:. Thế nên hỏi lại bà nhân sự là thế có được down xuống apply cho level 1 không. Mấy hôm sau thì có hẹn gọi điện vs bà ý để nói về chuẩn bị cho pv. Bà ý nói là không down xuống được vì Amazon sẽ không giúp thủ tục hay trả toàn bộ chi phí relocation khi tuyển SDE1, cơ mà SDE2 thì CÓ!!! :adore:. Ngoài ra bà recruiter cũng rất ngon ngọt dỗ dành mình là đừng có lo, sợ là bình thường, tao tin mày sẽ làm đc blah blah... nói chung là cũng tạo ko khí dễ chịu và giúp mình tự tin hơn, ghi nhận.
- Sau khi đã chốt là ok tôi đồng ý pv điện thoại, thì được gửi 1 cái link set lịch. Bà recruiter nói là phải chọn lịch pv trong khoảng 10h - 16h PST. Tương đương với nó là 0h - 6h sáng giờ VN :sweat:. Thế là đành book mấy hôm lúc 0h lúc dự án vừa kết thúc 1 sprint hay ngày đầu sprint.
- Book xong thì 1 hôm sau nhận mail báo là nó pick ngày gần nhất có thể để pv. Ok fine



- Trong lúc chờ pv thì điên cuồng lên youtube tìm tài liệu, subscribe 1 số đồng chí nói về cách thiết kế hệ thống, v.v... Nói chung là chả đâu vào đâu.
- Đến hôm phỏng vấn vẫn phải cho con đi ngủ :canny: vì mẹ nó ko cho đi ngủ nổi. Tu 1 cốc cà phê rồi ngồi đợi.
- Đến giờ pv, ông pv vào cái live conference muộn 1 tí, tranh thủ setup cái điện thoại chĩa vào màn hình quay lại. Cuối cùng nghe đc mỗi tiếng mình, không dám setup loa ngoài vì sợ khó nghe, ko dám setup record màn hình sợ nó detect đc đánh trượt, đành vậy.
- Trong lúc pv: sau màn chào hỏi, ông ý nói sẽ có 3 phần: behavioral questions, technical design questions, và coding question.
- Behavioral: phần này cần bám sát các leadership principle của amazon. Đối với phỏng vấn điện thoại, bà recruiter nhắc từ trước là cần tập trung vào "Deliver Result" và "Earn trust". Cụ thể là mình sẽ được hỏi câu hỏi tình huống về kinh nghiệm trong quá khư và mình cần phải lái nó sao cho thể hiện được mình mang sẵn trong người các leadership principle của nó. Mình nhớ là được hỏi 3 câu:
+ Nói về 1 lần mà cậu bị chỉ trích. Cậu phản ứng như nào?
+ Nói về 1 lần mà cậu phải làm việc với rất nhiều áp lực. Cậu làm gì? như nào?
+ Nói về 1 lần cậu phạm sai lầm. Cậu xử lý như nào?
- Technical design: phần này dễ hơn tưởng tượng. Nói chung là ông ý đưa ra 1 use case đơn giản và phức tạp hóa dần lên, mình phải biến đổi cái thiết kế của mình để đáp ứng được các nhu cầu đấy. Mình nhớ được cụ thể như sau (có thể miss 1 vài câu):

-> tôi muốn upload được ảnh từ điện thoại, làm như nào
-> ảnh này upload lên cần share cho tất cả mọi người trong danh bạ, làm như nào
-> share cho chỉ những người dùng hệ thống này
-> ảnh này chỉ được share cho những người dùng ở châu Phi, làm như nào?
-> ở châu Phi mạng rất kém, muốn xem ảnh full resolution, làm như nào?
-> khi up ảnh lên cần thông báo cho tất cả ng dùng trong danh bạ mà có dùng hệ thống, làm như nào
-> Cơ chế thông báo, nếu ko dùng 3rd party, theo anh là gì?
-> Khi có rất rất nhiều người dùng hệ thống, tải của server có hạn, cần làm gì?
-> Giả sử việc up ảnh tốn rất nhiều thời gian và không xử lý được ngay khi tạo request up ảnh, hệ thống thì có nhiều người dùng với các tier khác nhau 1,2,3... Làm sao để đảm bảo người dùng tier cao hơn được xử lý việc up ảnh trước?

Chốt lại là mình ko cảm thấy response của ông ý có vẻ negative khi nhận các câu trả lời của mình khi ông ý cứ biến đổi tình huống. Kinh nghiệm là khả năng cao là yêu cầu ông ý đưa ra không rõ ràng hay sai (ví dụ ban đầu là upload ảnh và hệ thống "tự" biết là danh bạ ông ý có những ai để gửi ảnh cho họ, cần correct lại requirement - nói chung là giống như khi bạn đi họp và clear requirement với BA thôi)
- Coding question: lúc hỏi xong design thì ông ý bảo là phải đi họp đây, nhưng mà cậu thích thì tôi sẽ hỏi thêm coding, và nó không phải mục đích chính của buổi hôm nay. Lúc đấy mình cũng buồn ngủ lắm rồi (1h sáng) nhưng cũng nói cứng bảo cứ hỏi đi. Thế là ông ý cho bài tập, rồi bảo ko cần phải code đàng hoàng đâu, cứ nói cho tôi hướng giải. May mà hết giờ rồi chứ mình cũng hơi mụ mị rồi, lúc đấy chỉ nói được qua qua về hướng thôi. Bài tập là:
+ Cho 1 số A và 1 số B có cùng số chữ số. Có thể biến đổi số A thành số B từ từ bằng cách thay đổi 1 chữ số trong số A 1 đơn vị. Ví dụ: từ 321 thành 132, có thể đổi như sau:
321 -> 322 -> 332 -> 232 -> 132
+ Cho 1 list các số List<Integer> và 2 số A, B. A chỉ có thể biến đổi thành 1 số thuộc List đã cho. Trả về true/false xem với list đấy, có thể biến A thành B không.
Đang vừa nghĩ hướng giải vừa trình bày cho ông ý thì ông ý đi họp và cảm ơn các thứ.
------------
Phỏng vấn sáng t5, thì hôm nay tối thứ 2 mình nhận mail pass và sẽ được đi Vancouver 1 bữa!!
Phew! Tạm thời thế thôi, mình cũng ko trông đợi là lần đầu pv amazon mà pass luôn nhận luôn, tuy nhiên vẫn cố gằng hết sức thôi, càng đi xa càng vui. Nhất là giờ tự nhiên được đi du lịch miễn phí.
Sẽ update dần sau.
Nói chung là với ae developer mà muốn thoát thân thì mình chỉ biết nói là học giỏi ngoại ngữ vào, chăm 1 tí, cơ hội sẽ đến với các bạn, và đặc biệt là con của các bạn.

À mà mình cũng ko sợ lần này trượt, vì bọn như này nó ko phải là trượt 1 lần là thôi, mình có thể apply liên tục 6 tháng 1 lần. Lần này trượt thì mình có kn 6 tháng sau apply tiếp. Có thể vẫn là Amazon Vancouver, có thể là amazon chỗ khác, hay google microsoft gì đấy chẳng hạn. Ít ra amazon đã nhận CV của mình. Mình sẽ tự tin hơn apply chỗ khác

========================
EDIT: Nhiều bác hỏi kinh nghiệm học tiếng Anh quá. Mình trả lời chung luôn vậy: mình chả có kinh nghiệm gì cả. Tiếng Anh của mình là do quá trình tích lũy chơi game đọc truyện xem phim từ thời cấp 2, có lẽ là cộng với năng khiếu ngôn ngữ ở mức độ nhất định nữa.
Lên đại học mình có đi học thêm ở trung tâm nhưng trình cũng không thấy lên mấy. Xong rồi mình có 1 năm chỉ ngồi làm bài tập IELTS trong bộ chục quyển của cambridge ý, làm theo kiểu đọc hiểu các bài reading trong đấy. Có thể với nền tiếng Anh tích lũy từ nhỏ nên học kiểu đấy nó lên nhanh.
Lúc học xong ĐH thì để chuẩn bị đi du học, mình có đi học độ 4-5 tháng ở trung tâm. Nói chung là mình cảm giác nó giúp tổ chức lại mớ hổ lốn mình đã có sẵn trong đầu (nhờ quá trình tích lũy từ cấp 2 như trên). Lúc đấy thi IELTS Academic đc 7.5.
Trong quá trình học hay lúc mới đi làm cũng rảnh nên mình hay đọc truyện = tiếng Anh. Quyển đầu tiên mình đọc thì là Harry Potter tập 6. Hồi đi du học thì cũng chỉ có truyện tiếng Anh mà đọc, đọc Hunger games chẳng hạn. Có một đợt ngồi cày quyển Đồi Gió Hú tiếng Anh (đọc xong hoa cmn mắt).
Từ khi đi du học về thì mình cũng không dùng đến tiếng Anh speaking mấy, tuy nhiên vì làm dev nên tài liệu vẫn phải đọc liên tục nên không bị mất tiếp cận. Dạo gần đây thì mình hay xem các phim series như là Big Bang Theory (tuy nhiều khi chả hiểu gì).

Last Updated 16-09-2019 at 23:35
Tình hình là từ cuối tháng 7 mình có apply online vào amazon.jobs cho vị trí SDE2 ở Vancouver.


TLDR: vừa nhận mail báo amazon sẽ chu cấp cho mình sang pv onsite.

Dưới đây là giới thiệu sơ qua về bản thân và "hành trình" có được cơ hội này.

*** Về mình:
- 1 developer cũng gọi là tầm thường như bao developer khác :chaymau:. Học ĐTVT ra với kiến thức lập trình = 0. Đi du học học bổng Utachi ngành ĐTVT. Đến lúc học xong thì bị đẩy đi thực tập và bắt đầu làm lập trình từ lúc đấy (tháng 6/2013) bằng C và Java android.
- Tháng 3/2014 thì về VN, xin vào FSOFT với mức lương 6tr/th làm C++. Sau đấy với tiếng Anh xịn xò (7.5 IELTS từ hồi trc khi đi du học) được đẩy đi Nhật mấy tháng. Về nước thì lại làm java ở FPT mấy tháng rồi nhảy việc.:go:
- Nhảy việc sang 1 cty outsource khác lương cao hơn khá nhiều so vs FSOFT, chủ yểu làm Java, có tí Python. Vẫn đang làm đến giờ.
- Trong quá trình đi làm thì mình thỉnh thoảng cũng học thêm các thứ về cấu trúc dữ liệu và giải thuật, functional programming. Cụ thể là khóa Algorithm Part 1/2 và Functional programming with Scala trên coursera.org là 2 khóa đóng góp nhiều nhất. Ngoài ra thì sách vở down lung tung về đọc.:byebye:.
- Trong mấy năm vừa rồi thì cứ 2 năm mình lại thi IELTS 1 nhát, được 2 lần 8.0

*** Về câu chuyện giữa Amazon và mình:

- Vì thấy chán chán VN nên cũng từ lâu ngó thử Canada với chính sách mở cửa của nó. Vấn đề là sau khi tìm hiểu thì có vẻ sang mà chưa có việc thì dễ nhưng kiếm việc rồi ở lại mới khó. Mình lại vợ con rồi, đi kiểu đấy quá rủi ro. Thôi thì kiếm ai nhận mình trước. Mà như vậy thì chỉ có mấy cty lớn. Sẵn tiện 2 năm gần đây đang học technology stack của AWS, ngó thử Amazon.
- Tìm thấy tin đăng tuyển trên web của nó cho SDE 2 cho Amazon Connect, cùng với check list mấy cái kỹ năng cần thiết. Sau khi tick thấy mình có vẻ đủ đk, quăng đại cái CV vào và cũng ko nghĩ gì nhiều :stick:
- First contact: 26/7/2019 mình nhận mail từ 1 Technical recruiter của Amazon, nói là CV của mình pass screening, và gửi link online code assessment. Link có hiệu lực 1 tuần. Gửi kèm là 1 lô các kiến thức mình nên ôn lại và các trang web hữu ích. Đọc mail bắt đầu rén tại vì có chuẩn bị quái gì đâu :sosad:. Thế là bắt đầu điên cuồng học ôn. Tất nhiên là vẫn phải đi làm ngày 8h, tối về đón con, trông con và cho nó ngủ, rửa bát nữa, thỉnh thoảng bật game lên chơi.:">


- Còn 10h thì hết hạn bài test và mình bắt đầu làm (sau khi cho con bé con đi ngủ :byebye:). Có 2 bài làm trong 90 phút. Đề bài = tiếng Anh. Tóm tắt đề bài là như này:
---------
+ Bài 1: có danh sách các file với độ lớn của file được thể hiện = số integer (input List<Integer>). Cần merge các file lại thành 1 file cuối cùng với quy luật như sau:
* merge được 2 file 1 lần.
* chi phí mỗi lần merge bằng tổng kích thước 2 file
* file sau khi merge bằng tổng kích thước 2 file
-> tìm chi phí nhỏ nhất để merge tất cả các file.
--------
+ Bài 2: 1 hãng vận tải có danh sách các tuyến bay đi và về. Danh sách tuyến bay được thể hiện = 1 List<List<Integer>>. Trong đó, mỗi List<Integer> thuộc List to có 2 phần tử: phần tử thứ nhất là số hiệu tuyến đi/về (integer: 1,2,3...) | phần tử thứ hai là chi phí tuyến đi/về (integer: 1000,2000,3000...)
* Khi một máy bay thực hiện chuyến đi và thực hiện chuyến về sẽ mất tổng chi phí là X.
* Cho số tự nhiên N. Khi X <= N và N - X là minimum thì chuyến đi/về được coi là tối ưu.
* Trả về tất cả các cặp số hiệu tuyến đi/về là tối ưu (format List<List<Integer>>)
-----------------
Để ae vui thì mình ko nêu lời giải :byebye:. Thực ra so với mấy bài test vui online thì mình thấy ko quá khó. Mỗi tội cái IDE online của nó cũng ko có auto import, auto complete, y như mấy trang online như hackerrank. Nói chung là bài 1 thì mình làm pass 9/10 test cases và bài 2 15/15 test cases, thừa 5 phút mãi ko nghĩ ra tại sao bài 1 fail test, xong rồi submit. Submit xong thì có câu hỏi giải thích về solution của mình và đánh giá time complexity. Lúc trả lời câu hỏi mình mới nhớ ra tại sao fail test case và ghi luôn vào phần trả lời lí do. Sau đấy có trắc nghiệm về tác phong làm việc = cách trả lời các câu hỏi tình huống với đáp án chung là mức độ đồng ý (5 mức: rất ko đồng ý, ko đồng ý, sao cũng đc, đồng ý, hoàn toàn đồng ý) với các tình huống mà nó đưa ra.:">
- Sau 3-4 ngày thì nhận mail thông báo đã pass vòng code test và mời sang Vancouver phỏng vấn luôn :adore:. Lúc đấy mừng quýnh, khoe khắp mọi nơi kể cả voz (xem post history sẽ thấy), cơ mà cũng nghĩ thấy quái quái vì quy trình của nó mình google ra là phải thêm 1-2 vòng phỏng vấn điện thoại nữa, nên là email hỏi lại cho rõ.


- Hóa ra là phải thêm vòng phỏng vấn điện thoại thật :sosad:. Với cả sau khi google thì phỏng vấn cho level 2 (SDE2) hỏi về technical design thấy có vẻ khó vkl ra :sweat:, kiểu như "thiết kế hệ thống payment của uber", nên là rén cực độ :sweat:. Thế nên hỏi lại bà nhân sự là thế có được down xuống apply cho level 1 không. Mấy hôm sau thì có hẹn gọi điện vs bà ý để nói về chuẩn bị cho pv. Bà ý nói là không down xuống được vì Amazon sẽ không giúp thủ tục hay trả toàn bộ chi phí relocation khi tuyển SDE1, cơ mà SDE2 thì CÓ!!! :adore:. Ngoài ra bà recruiter cũng rất ngon ngọt dỗ dành mình là đừng có lo, sợ là bình thường, tao tin mày sẽ làm đc blah blah... nói chung là cũng tạo ko khí dễ chịu và giúp mình tự tin hơn, ghi nhận.
- Sau khi đã chốt là ok tôi đồng ý pv điện thoại, thì được gửi 1 cái link set lịch. Bà recruiter nói là phải chọn lịch pv trong khoảng 10h - 16h PST. Tương đương với nó là 0h - 6h sáng giờ VN :sweat:. Thế là đành book mấy hôm lúc 0h lúc dự án vừa kết thúc 1 sprint hay ngày đầu sprint.
- Book xong thì 1 hôm sau nhận mail báo là nó pick ngày gần nhất có thể để pv. Ok fine



- Trong lúc chờ pv thì điên cuồng lên youtube tìm tài liệu, subscribe 1 số đồng chí nói về cách thiết kế hệ thống, v.v... Nói chung là chả đâu vào đâu.
- Đến hôm phỏng vấn vẫn phải cho con đi ngủ :canny: vì mẹ nó ko cho đi ngủ nổi. Tu 1 cốc cà phê rồi ngồi đợi.
- Đến giờ pv, ông pv vào cái live conference muộn 1 tí, tranh thủ setup cái điện thoại chĩa vào màn hình quay lại. Cuối cùng nghe đc mỗi tiếng mình, không dám setup loa ngoài vì sợ khó nghe, ko dám setup record màn hình sợ nó detect đc đánh trượt, đành vậy.
- Trong lúc pv: sau màn chào hỏi, ông ý nói sẽ có 3 phần: behavioral questions, technical design questions, và coding question.
- Behavioral: phần này cần bám sát các leadership principle của amazon. Đối với phỏng vấn điện thoại, bà recruiter nhắc từ trước là cần tập trung vào "Deliver Result" và "Earn trust". Cụ thể là mình sẽ được hỏi câu hỏi tình huống về kinh nghiệm trong quá khư và mình cần phải lái nó sao cho thể hiện được mình mang sẵn trong người các leadership principle của nó. Mình nhớ là được hỏi 3 câu:
+ Nói về 1 lần mà cậu bị chỉ trích. Cậu phản ứng như nào?
+ Nói về 1 lần mà cậu phải làm việc với rất nhiều áp lực. Cậu làm gì? như nào?
+ Nói về 1 lần cậu phạm sai lầm. Cậu xử lý như nào?
- Technical design: phần này dễ hơn tưởng tượng. Nói chung là ông ý đưa ra 1 use case đơn giản và phức tạp hóa dần lên, mình phải biến đổi cái thiết kế của mình để đáp ứng được các nhu cầu đấy. Mình nhớ được cụ thể như sau (có thể miss 1 vài câu):

-> tôi muốn upload được ảnh từ điện thoại, làm như nào
-> ảnh này upload lên cần share cho tất cả mọi người trong danh bạ, làm như nào
-> share cho chỉ những người dùng hệ thống này
-> ảnh này chỉ được share cho những người dùng ở châu Phi, làm như nào?
-> ở châu Phi mạng rất kém, muốn xem ảnh full resolution, làm như nào?
-> khi up ảnh lên cần thông báo cho tất cả ng dùng trong danh bạ mà có dùng hệ thống, làm như nào
-> Cơ chế thông báo, nếu ko dùng 3rd party, theo anh là gì?
-> Khi có rất rất nhiều người dùng hệ thống, tải của server có hạn, cần làm gì?
-> Giả sử việc up ảnh tốn rất nhiều thời gian và không xử lý được ngay khi tạo request up ảnh, hệ thống thì có nhiều người dùng với các tier khác nhau 1,2,3... Làm sao để đảm bảo người dùng tier cao hơn được xử lý việc up ảnh trước?

Chốt lại là mình ko cảm thấy response của ông ý có vẻ negative khi nhận các câu trả lời của mình khi ông ý cứ biến đổi tình huống. Kinh nghiệm là khả năng cao là yêu cầu ông ý đưa ra không rõ ràng hay sai (ví dụ ban đầu là upload ảnh và hệ thống "tự" biết là danh bạ ông ý có những ai để gửi ảnh cho họ, cần correct lại requirement - nói chung là giống như khi bạn đi họp và clear requirement với BA thôi)
- Coding question: lúc hỏi xong design thì ông ý bảo là phải đi họp đây, nhưng mà cậu thích thì tôi sẽ hỏi thêm coding, và nó không phải mục đích chính của buổi hôm nay. Lúc đấy mình cũng buồn ngủ lắm rồi (1h sáng) nhưng cũng nói cứng bảo cứ hỏi đi. Thế là ông ý cho bài tập, rồi bảo ko cần phải code đàng hoàng đâu, cứ nói cho tôi hướng giải. May mà hết giờ rồi chứ mình cũng hơi mụ mị rồi, lúc đấy chỉ nói được qua qua về hướng thôi. Bài tập là:
+ Cho 1 số A và 1 số B có cùng số chữ số. Có thể biến đổi số A thành số B từ từ bằng cách thay đổi 1 chữ số trong số A 1 đơn vị. Ví dụ: từ 321 thành 132, có thể đổi như sau:
321 -> 322 -> 332 -> 232 -> 132
+ Cho 1 list các số List<Integer> và 2 số A, B. A chỉ có thể biến đổi thành 1 số thuộc List đã cho. Trả về true/false xem với list đấy, có thể biến A thành B không.
Đang vừa nghĩ hướng giải vừa trình bày cho ông ý thì ông ý đi họp và cảm ơn các thứ.
------------
Phỏng vấn sáng t5, thì hôm nay tối thứ 2 mình nhận mail pass và sẽ được đi Vancouver 1 bữa!!
Phew! Tạm thời thế thôi, mình cũng ko trông đợi là lần đầu pv amazon mà pass luôn nhận luôn, tuy nhiên vẫn cố gằng hết sức thôi, càng đi xa càng vui. Nhất là giờ tự nhiên được đi du lịch miễn phí.
Sẽ update dần sau.
Nói chung là với ae developer mà muốn thoát thân thì mình chỉ biết nói là học giỏi ngoại ngữ vào, chăm 1 tí, cơ hội sẽ đến với các bạn, và đặc biệt là con của các bạn.

À mà mình cũng ko sợ lần này trượt, vì bọn như này nó ko phải là trượt 1 lần là thôi, mình có thể apply liên tục 6 tháng 1 lần. Lần này trượt thì mình có kn 6 tháng sau apply tiếp. Có thể vẫn là Amazon Vancouver, có thể là amazon chỗ khác, hay google microsoft gì đấy chẳng hạn. Ít ra amazon đã nhận CV của mình. Mình sẽ tự tin hơn apply chỗ khác

Tình hình là từ cuối tháng 7 mình có apply online vào amazon.jobs cho vị trí SDE2 ở Vancouver.


TLDR: vừa nhận mail báo amazon sẽ chu cấp cho mình sang pv onsite.

Dưới đây là giới thiệu sơ qua về bản thân và "hành trình" có được cơ hội này.

*** Về mình:
- 1 developer cũng gọi là tầm thường như bao developer khác :chaymau:. Học ĐTVT ra với kiến thức lập trình = 0. Đi du học học bổng Utachi ngành ĐTVT. Đến lúc học xong thì bị đẩy đi thực tập và bắt đầu làm lập trình từ lúc đấy (tháng 6/2013) bằng C và Java android.
- Tháng 3/2014 thì về VN, xin vào FSOFT với mức lương 6tr/th làm C++. Sau đấy với tiếng Anh xịn xò (7.5 IELTS từ hồi trc khi đi du học) được đẩy đi Nhật mấy tháng. Về nước thì lại làm java ở FPT mấy tháng rồi nhảy việc.:go:
- Nhảy việc sang 1 cty outsource khác lương cao hơn khá nhiều so vs FSOFT, chủ yểu làm Java, có tí Python. Vẫn đang làm đến giờ.
- Trong quá trình đi làm thì mình thỉnh thoảng cũng học thêm các thứ về cấu trúc dữ liệu và giải thuật, functional programming. Cụ thể là khóa Algorithm Part 1/2 và Functional programming with Scala trên coursera.org là 2 khóa đóng góp nhiều nhất. Ngoài ra thì sách vở down lung tung về đọc.:byebye:.
- Trong mấy năm vừa rồi thì cứ 2 năm mình lại thi IELTS 1 nhát, được 2 lần 8.0

*** Về câu chuyện giữa Amazon và mình:

- Vì thấy chán chán VN nên cũng từ lâu ngó thử Canada với chính sách mở cửa của nó. Vấn đề là sau khi tìm hiểu thì có vẻ sang mà chưa có việc thì dễ nhưng kiếm việc rồi ở lại mới khó. Mình lại vợ con rồi, đi kiểu đấy quá rủi ro. Thôi thì kiếm ai nhận mình trước. Mà như vậy thì chỉ có mấy cty lớn. Sẵn tiện 2 năm gần đây đang học technology stack của AWS, ngó thử Amazon.
- Tìm thấy tin đăng tuyển trên web của nó cho SDE 2 cho Amazon Connect, cùng với check list mấy cái kỹ năng cần thiết. Sau khi tick thấy mình có vẻ đủ đk, quăng đại cái CV vào và cũng ko nghĩ gì nhiều :stick:
- First contact: 26/7/2019 mình nhận mail từ 1 Technical recruiter của Amazon, nói là CV của mình pass screening, và gửi link online code assessment. Link có hiệu lực 1 tuần. Gửi kèm là 1 lô các kiến thức mình nên ôn lại và các trang web hữu ích. Đọc mail bắt đầu rén tại vì có chuẩn bị quái gì đâu :sosad:. Thế là bắt đầu điên cuồng học ôn. Tất nhiên là vẫn phải đi làm ngày 8h, tối về đón con, trông con và cho nó ngủ, rửa bát nữa, thỉnh thoảng bật game lên chơi.:">


- Còn 10h thì hết hạn bài test và mình bắt đầu làm (sau khi cho con bé con đi ngủ :byebye:). Có 2 bài làm trong 90 phút. Đề bài = tiếng Anh. Tóm tắt đề bài là như này:
---------
+ Bài 1: có danh sách các file với độ lớn của file được thể hiện = số integer (input List<Integer>). Cần merge các file lại thành 1 file cuối cùng với quy luật như sau:
* merge được 2 file 1 lần.
* chi phí mỗi lần merge bằng tổng kích thước 2 file
* file sau khi merge bằng tổng kích thước 2 file
-> tìm chi phí nhỏ nhất để merge tất cả các file.
--------
+ Bài 2: 1 hãng vận tải có danh sách các tuyến bay đi và về. Danh sách tuyến bay được thể hiện = 1 List<List<Integer>>. Trong đó, mỗi List<Integer> thuộc List to có 2 phần tử: phần tử thứ nhất là số hiệu tuyến đi/về (integer: 1,2,3...) | phần tử thứ hai là chi phí tuyến đi/về (integer: 1000,2000,3000...)
* Khi một máy bay thực hiện chuyến đi và thực hiện chuyến về sẽ mất tổng chi phí là X.
* Cho số tự nhiên N. Khi X <= N và N - X là minimum thì chuyến đi/về được coi là tối ưu.
* Trả về tất cả các cặp số hiệu tuyến đi/về là tối ưu (format List<List<Integer>>)
-----------------
Để ae vui thì mình ko nêu lời giải :byebye:. Thực ra so với mấy bài test vui online thì mình thấy ko quá khó. Mỗi tội cái IDE online của nó cũng ko có auto import, auto complete, y như mấy trang online như hackerrank. Nói chung là bài 1 thì mình làm pass 9/10 test cases và bài 2 15/15 test cases, thừa 5 phút mãi ko nghĩ ra tại sao bài 1 fail test, xong rồi submit. Submit xong thì có câu hỏi giải thích về solution của mình và đánh giá time complexity. Lúc trả lời câu hỏi mình mới nhớ ra tại sao fail test case và ghi luôn vào phần trả lời lí do. Sau đấy có trắc nghiệm về tác phong làm việc = cách trả lời các câu hỏi tình huống với đáp án chung là mức độ đồng ý (5 mức: rất ko đồng ý, ko đồng ý, sao cũng đc, đồng ý, hoàn toàn đồng ý) với các tình huống mà nó đưa ra.:">
- Sau 3-4 ngày thì nhận mail thông báo đã pass vòng code test và mời sang Vancouver phỏng vấn luôn :adore:. Lúc đấy mừng quýnh, khoe khắp mọi nơi kể cả voz (xem post history sẽ thấy), cơ mà cũng nghĩ thấy quái quái vì quy trình của nó mình google ra là phải thêm 1-2 vòng phỏng vấn điện thoại nữa, nên là email hỏi lại cho rõ.


- Hóa ra là phải thêm vòng phỏng vấn điện thoại thật :sosad:. Với cả sau khi google thì phỏng vấn cho level 2 (SDE2) hỏi về technical design thấy có vẻ khó vkl ra :sweat:, kiểu như "thiết kế hệ thống payment của uber", nên là rén cực độ :sweat:. Thế nên hỏi lại bà nhân sự là thế có được down xuống apply cho level 1 không. Mấy hôm sau thì có hẹn gọi điện vs bà ý để nói về chuẩn bị cho pv. Bà ý nói là không down xuống được vì Amazon sẽ không giúp thủ tục hay trả toàn bộ chi phí relocation khi tuyển SDE1, cơ mà SDE2 thì CÓ!!! :adore:. Ngoài ra bà recruiter cũng rất ngon ngọt dỗ dành mình là đừng có lo, sợ là bình thường, tao tin mày sẽ làm đc blah blah... nói chung là cũng tạo ko khí dễ chịu và giúp mình tự tin hơn, ghi nhận.
- Sau khi đã chốt là ok tôi đồng ý pv điện thoại, thì được gửi 1 cái link set lịch. Bà recruiter nói là phải chọn lịch pv trong khoảng 10h - 16h PST. Tương đương với nó là 0h - 6h sáng giờ VN :sweat:. Thế là đành book mấy hôm lúc 0h lúc dự án vừa kết thúc 1 sprint hay ngày đầu sprint.
- Book xong thì 1 hôm sau nhận mail báo là nó pick ngày gần nhất có thể để pv. Ok fine



- Trong lúc chờ pv thì điên cuồng lên youtube tìm tài liệu, subscribe 1 số đồng chí nói về cách thiết kế hệ thống, v.v... Nói chung là chả đâu vào đâu.
- Đến hôm phỏng vấn vẫn phải cho con đi ngủ :canny: vì mẹ nó ko cho đi ngủ nổi. Tu 1 cốc cà phê rồi ngồi đợi.
- Đến giờ pv, ông pv vào cái live conference muộn 1 tí, tranh thủ setup cái điện thoại chĩa vào màn hình quay lại. Cuối cùng nghe đc mỗi tiếng mình, không dám setup loa ngoài vì sợ khó nghe, ko dám setup record màn hình sợ nó detect đc đánh trượt, đành vậy.
- Trong lúc pv: sau màn chào hỏi, ông ý nói sẽ có 3 phần: behavioral questions, technical design questions, và coding question.
- Behavioral: phần này cần bám sát các leadership principle của amazon. Đối với phỏng vấn điện thoại, bà recruiter nhắc từ trước là cần tập trung vào "Deliver Result" và "Earn trust". Cụ thể là mình sẽ được hỏi câu hỏi tình huống về kinh nghiệm trong quá khư và mình cần phải lái nó sao cho thể hiện được mình mang sẵn trong người các leadership principle của nó. Mình nhớ là được hỏi 3 câu:
+ Nói về 1 lần mà cậu bị chỉ trích. Cậu phản ứng như nào?
+ Nói về 1 lần mà cậu phải làm việc với rất nhiều áp lực. Cậu làm gì? như nào?
+ Nói về 1 lần cậu phạm sai lầm. Cậu xử lý như nào?
- Technical design: phần này dễ hơn tưởng tượng. Nói chung là ông ý đưa ra 1 use case đơn giản và phức tạp hóa dần lên, mình phải biến đổi cái thiết kế của mình để đáp ứng được các nhu cầu đấy. Mình nhớ được cụ thể như sau (có thể miss 1 vài câu):

-> tôi muốn upload được ảnh từ điện thoại, làm như nào
-> ảnh này upload lên cần share cho tất cả mọi người trong danh bạ, làm như nào
-> share cho chỉ những người dùng hệ thống này
-> ảnh này chỉ được share cho những người dùng ở châu Phi, làm như nào?
-> ở châu Phi mạng rất kém, muốn xem ảnh full resolution, làm như nào?
-> khi up ảnh lên cần thông báo cho tất cả ng dùng trong danh bạ mà có dùng hệ thống, làm như nào
-> Cơ chế thông báo, nếu ko dùng 3rd party, theo anh là gì?
-> Khi có rất rất nhiều người dùng hệ thống, tải của server có hạn, cần làm gì?
-> Giả sử việc up ảnh tốn rất nhiều thời gian và không xử lý được ngay khi tạo request up ảnh, hệ thống thì có nhiều người dùng với các tier khác nhau 1,2,3... Làm sao để đảm bảo người dùng tier cao hơn được xử lý việc up ảnh trước?

Chốt lại là mình ko cảm thấy response của ông ý có vẻ negative khi nhận các câu trả lời của mình khi ông ý cứ biến đổi tình huống. Kinh nghiệm là khả năng cao là yêu cầu ông ý đưa ra không rõ ràng hay sai (ví dụ ban đầu là upload ảnh và hệ thống "tự" biết là danh bạ ông ý có những ai để gửi ảnh cho họ, cần correct lại requirement - nói chung là giống như khi bạn đi họp và clear requirement với BA thôi)
- Coding question: lúc hỏi xong design thì ông ý bảo là phải đi họp đây, nhưng mà cậu thích thì tôi sẽ hỏi thêm coding, và nó không phải mục đích chính của buổi hôm nay. Lúc đấy mình cũng buồn ngủ lắm rồi (1h sáng) nhưng cũng nói cứng bảo cứ hỏi đi. Thế là ông ý cho bài tập, rồi bảo ko cần phải code đàng hoàng đâu, cứ nói cho tôi hướng giải. May mà hết giờ rồi chứ mình cũng hơi mụ mị rồi, lúc đấy chỉ nói được qua qua về hướng thôi. Bài tập là:
+ Cho 1 số A và 1 số B có cùng số chữ số. Có thể biến đổi số A thành số B từ từ bằng cách thay đổi 1 chữ số trong số A 1 đơn vị. Ví dụ: từ 321 thành 132, có thể đổi như sau:
321 -> 322 -> 332 -> 232 -> 132
+ Cho 1 list các số List<Integer> và 2 số A, B. A chỉ có thể biến đổi thành 1 số thuộc List đã cho. Trả về true/false xem với list đấy, có thể biến A thành B không.
Đang vừa nghĩ hướng giải vừa trình bày cho ông ý thì ông ý đi họp và cảm ơn các thứ.
------------
Phỏng vấn sáng t5, thì hôm nay tối thứ 2 mình nhận mail pass và sẽ được đi Vancouver 1 bữa!!
Phew! Tạm thời thế thôi, mình cũng ko trông đợi là lần đầu pv amazon mà pass luôn nhận luôn, tuy nhiên vẫn cố gằng hết sức thôi, càng đi xa càng vui. Nhất là giờ tự nhiên được đi du lịch miễn phí.
Sẽ update dần sau.
Nói chung là với ae developer mà muốn thoát thân thì mình chỉ biết nói là học giỏi ngoại ngữ vào, chăm 1 tí, cơ hội sẽ đến với các bạn, và đặc biệt là con của các bạn.

À mà mình cũng ko sợ lần này trượt, vì bọn như này nó ko phải là trượt 1 lần là thôi, mình có thể apply liên tục 6 tháng 1 lần. Lần này trượt thì mình có kn 6 tháng sau apply tiếp. Có thể vẫn là Amazon Vancouver, có thể là amazon chỗ khác, hay google microsoft gì đấy chẳng hạn. Ít ra amazon đã nhận CV của mình. Mình sẽ tự tin hơn apply chỗ khác
 
Last edited by a moderator:

AccMoiDungBan

New Member
Joined
Sep 28, 2017
Messages
2,667
Reaction score
1
thanhNoel said:
Tình hình là từ cuối tháng 7 mình có apply online vào amazon.jobs cho vị trí SDE2 ở Vancouver.

Ảnh
TLDR: vừa nhận mail báo amazon sẽ chu cấp cho mình sang pv onsite.

Dưới đây là giới thiệu sơ qua về bản thân và "hành trình" có được cơ hội này.

*** Về mình:
- 1 developer cũng gọi là tầm thường như bao developer khác :chaymau:. Học ĐTVT ra với kiến thức lập trình = 0. Đi du học học bổng Utachi ngành ĐTVT. Đến lúc học xong thì bị đẩy đi thực tập và bắt đầu làm lập trình từ lúc đấy (tháng 6/2013) bằng C và Java android.
- Tháng 3/2014 thì về VN, xin vào FSOFT với mức lương 6tr/th làm C . Sau đấy với tiếng Anh xịn xò (7.5 IELTS từ hồi trc khi đi du học) được đẩy đi Nhật mấy tháng. Về nước thì lại làm java ở FPT mấy tháng rồi nhảy việc.:go:
- Nhảy việc sang 1 cty outsource khác lương cao hơn khá nhiều so vs FSOFT, chủ yểu làm Java, có tí Python. Vẫn đang làm đến giờ.
- Trong quá trình đi làm thì mình thỉnh thoảng cũng học thêm các thứ về cấu trúc dữ liệu và giải thuật, functional programming. Cụ thể là khóa Algorithm Part 1/2 và Functional programming with Scala trên coursera.org là 2 khóa đóng góp nhiều nhất. Ngoài ra thì sách vở down lung tung về đọc.:byebye:.
- Trong mấy năm vừa rồi thì cứ 2 năm mình lại thi IELTS 1 nhát, được 2 lần 8.0

*** Về câu chuyện giữa Amazon và mình:

- Vì thấy chán chán VN nên cũng từ lâu ngó thử Canada với chính sách mở cửa của nó. Vấn đề là sau khi tìm hiểu thì có vẻ sang mà chưa có việc thì dễ nhưng kiếm việc rồi ở lại mới khó. Mình lại vợ con rồi, đi kiểu đấy quá rủi ro. Thôi thì kiếm ai nhận mình trước. Mà như vậy thì chỉ có mấy cty lớn. Sẵn tiện 2 năm gần đây đang học technology stack của AWS, ngó thử Amazon.
- Tìm thấy tin đăng tuyển trên web của nó cho SDE 2 cho Amazon Connect, cùng với check list mấy cái kỹ năng cần thiết. Sau khi tick thấy mình có vẻ đủ đk, quăng đại cái CV vào và cũng ko nghĩ gì nhiều :stick:
- First contact: 26/7/2019 mình nhận mail từ 1 Technical recruiter của Amazon, nói là CV của mình pass screening, và gửi link online code assessment. Link có hiệu lực 1 tuần. Gửi kèm là 1 lô các kiến thức mình nên ôn lại và các trang web hữu ích. Đọc mail bắt đầu rén tại vì có chuẩn bị quái gì đâu :sosad:. Thế là bắt đầu điên cuồng học ôn. Tất nhiên là vẫn phải đi làm ngày 8h, tối về đón con, trông con và cho nó ngủ, rửa bát nữa, thỉnh thoảng bật game lên chơi.:">

Ảnh
- Còn 10h thì hết hạn bài test và mình bắt đầu làm (sau khi cho con bé con đi ngủ :byebye:). Có 2 bài làm trong 90 phút. Đề bài = tiếng Anh. Tóm tắt đề bài là như này:
---------
Bài 1: có danh sách các file với độ lớn của file được thể hiện = số integer (input List<Integer>). Cần merge các file lại thành 1 file cuối cùng với quy luật như sau:
* merge được 2 file 1 lần.
* chi phí mỗi lần merge bằng tổng kích thước 2 file
* file sau khi merge bằng tổng kích thước 2 file
-> tìm chi phí nhỏ nhất để merge tất cả các file.
--------
Bài 2: 1 hãng vận tải có danh sách các tuyến bay đi và về. Danh sách tuyến bay được thể hiện = 1 List<List<Integer>>. Trong đó, mỗi List<Integer> thuộc List to có 2 phần tử: phần tử thứ nhất là số hiệu tuyến đi/về (integer: 1,2,3...) | phần tử thứ hai là chi phí tuyến đi/về (integer: 1000,2000,3000...)
* Khi một máy bay thực hiện chuyến đi và thực hiện chuyến về sẽ mất tổng chi phí là X.
* Cho số tự nhiên N. Khi X <= N và N - X là minimum thì chuyến đi/về được coi là tối ưu.
* Trả về tất cả các cặp số hiệu tuyến đi/về là tối ưu (format List<List<Integer>>)
-----------------
Để ae vui thì mình ko nêu lời giải :byebye:. Thực ra so với mấy bài test vui online thì mình thấy ko quá khó. Mỗi tội cái IDE online của nó cũng ko có auto import, auto complete, y như mấy trang online như hackerrank. Nói chung là bài 1 thì mình làm pass 9/10 test cases và bài 2 15/15 test cases, thừa 5 phút mãi ko nghĩ ra tại sao bài 1 fail test, xong rồi submit. Submit xong thì có câu hỏi giải thích về solution của mình và đánh giá time complexity. Lúc trả lời câu hỏi mình mới nhớ ra tại sao fail test case và ghi luôn vào phần trả lời lí do. Sau đấy có trắc nghiệm về tác phong làm việc = cách trả lời các câu hỏi tình huống với đáp án chung là mức độ đồng ý (5 mức: rất ko đồng ý, ko đồng ý, sao cũng đc, đồng ý, hoàn toàn đồng ý) với các tình huống mà nó đưa ra.:">
- Sau 3-4 ngày thì nhận mail thông báo đã pass vòng code test và mời sang Vancouver phỏng vấn luôn :adore:. Lúc đấy mừng quýnh, khoe khắp mọi nơi kể cả voz (xem post history sẽ thấy), cơ mà cũng nghĩ thấy quái quái vì quy trình của nó mình google ra là phải thêm 1-2 vòng phỏng vấn điện thoại nữa, nên là email hỏi lại cho rõ.

Ảnh
- Hóa ra là phải thêm vòng phỏng vấn điện thoại thật :sosad:. Với cả sau khi google thì phỏng vấn cho level 2 (SDE2) hỏi về technical design thấy có vẻ khó vkl ra :sweat:, kiểu như "thiết kế hệ thống payment của uber", nên là rén cực độ :sweat:. Thế nên hỏi lại bà nhân sự là thế có được down xuống apply cho level 1 không. Mấy hôm sau thì có hẹn gọi điện vs bà ý để nói về chuẩn bị cho pv. Bà ý nói là không down xuống được vì Amazon sẽ không giúp thủ tục hay trả toàn bộ chi phí relocation khi tuyển SDE1, cơ mà SDE2 thì CÓ!!! :adore:. Ngoài ra bà recruiter cũng rất ngon ngọt dỗ dành mình là đừng có lo, sợ là bình thường, tao tin mày sẽ làm đc blah blah... nói chung là cũng tạo ko khí dễ chịu và giúp mình tự tin hơn, ghi nhận.
- Sau khi đã chốt là ok tôi đồng ý pv điện thoại, thì được gửi 1 cái link set lịch. Bà recruiter nói là phải chọn lịch pv trong khoảng 10h - 16h PST. Tương đương với nó là 0h - 6h sáng giờ VN :sweat:. Thế là đành book mấy hôm lúc 0h lúc dự án vừa kết thúc 1 sprint hay ngày đầu sprint.
- Book xong thì 1 hôm sau nhận mail báo là nó pick ngày gần nhất có thể để pv. Ok fine

Ảnh

- Trong lúc chờ pv thì điên cuồng lên youtube tìm tài liệu, subscribe 1 số đồng chí nói về cách thiết kế hệ thống, v.v... Nói chung là chả đâu vào đâu.
- Đến hôm phỏng vấn vẫn phải cho con đi ngủ :canny: vì mẹ nó ko cho đi ngủ nổi. Tu 1 cốc cà phê rồi ngồi đợi.
- Đến giờ pv, ông pv vào cái live conference muộn 1 tí, tranh thủ setup cái điện thoại chĩa vào màn hình quay lại. Cuối cùng nghe đc mỗi tiếng mình, không dám setup loa ngoài vì sợ khó nghe, ko dám setup record màn hình sợ nó detect đc đánh trượt, đành vậy.
- Trong lúc pv: sau màn chào hỏi, ông ý nói sẽ có 3 phần: behavioral questions, technical design questions, và coding question.
- Behavioral: phần này cần bám sát các leadership principle của amazon. Đối với phỏng vấn điện thoại, bà recruiter nhắc từ trước là cần tập trung vào "Deliver Result" và "Earn trust". Cụ thể là mình sẽ được hỏi câu hỏi tình huống về kinh nghiệm trong quá khư và mình cần phải lái nó sao cho thể hiện được mình mang sẵn trong người các leadership principle của nó. Mình nhớ là được hỏi 3 câu:
Nói về 1 lần mà cậu bị chỉ trích. Cậu phản ứng như nào?
Nói về 1 lần mà cậu phải làm việc với rất nhiều áp lực. Cậu làm gì? như nào?
Nói về 1 lần cậu phạm sai lầm. Cậu xử lý như nào?
- Technical design: phần này dễ hơn tưởng tượng. Nói chung là ông ý đưa ra 1 use case đơn giản và phức tạp hóa dần lên, mình phải biến đổi cái thiết kế của mình để đáp ứng được các nhu cầu đấy. Mình nhớ được cụ thể như sau (có thể miss 1 vài câu):

-> tôi muốn upload được ảnh từ điện thoại, làm như nào
-> ảnh này upload lên cần share cho tất cả mọi người trong danh bạ, làm như nào
-> share cho chỉ những người dùng hệ thống này
-> ảnh này chỉ được share cho những người dùng ở châu Phi, làm như nào?
-> ở châu Phi mạng rất kém, muốn xem ảnh full resolution, làm như nào?
-> khi up ảnh lên cần thông báo cho tất cả ng dùng trong danh bạ mà có dùng hệ thống, làm như nào
-> Cơ chế thông báo, nếu ko dùng 3rd party, theo anh là gì?
-> Khi có rất rất nhiều người dùng hệ thống, tải của server có hạn, cần làm gì?
-> Giả sử việc up ảnh tốn rất nhiều thời gian và không xử lý được ngay khi tạo request up ảnh, hệ thống thì có nhiều người dùng với các tier khác nhau 1,2,3... Làm sao để đảm bảo người dùng tier cao hơn được xử lý việc up ảnh trước?

Chốt lại là mình ko cảm thấy response của ông ý có vẻ negative khi nhận các câu trả lời của mình khi ông ý cứ biến đổi tình huống. Kinh nghiệm là khả năng cao là yêu cầu ông ý đưa ra không rõ ràng hay sai (ví dụ ban đầu là upload ảnh và hệ thống "tự" biết là danh bạ ông ý có những ai để gửi ảnh cho họ, cần correct lại requirement - nói chung là giống như khi bạn đi họp và clear requirement với BA thôi)
- Coding question: lúc hỏi xong design thì ông ý bảo là phải đi họp đây, nhưng mà cậu thích thì tôi sẽ hỏi thêm coding, và nó không phải mục đích chính của buổi hôm nay. Lúc đấy mình cũng buồn ngủ lắm rồi (1h sáng) nhưng cũng nói cứng bảo cứ hỏi đi. Thế là ông ý cho bài tập, rồi bảo ko cần phải code đàng hoàng đâu, cứ nói cho tôi hướng giải. May mà hết giờ rồi chứ mình cũng hơi mụ mị rồi, lúc đấy chỉ nói được qua qua về hướng thôi. Bài tập là:
Cho 1 số A và 1 số B có cùng số chữ số. Có thể biến đổi số A thành số B từ từ bằng cách thay đổi 1 chữ số trong số A 1 đơn vị. Ví dụ: từ 321 thành 132, có thể đổi như sau:
321 -> 322 -> 332 -> 232 -> 132
Cho 1 list các số List<Integer> và 2 số A, B. A chỉ có thể biến đổi thành 1 số thuộc List đã cho. Trả về true/false xem với list đấy, có thể biến A thành B không.
Đang vừa nghĩ hướng giải vừa trình bày cho ông ý thì ông ý đi họp và cảm ơn các thứ.
------------
Phỏng vấn sáng t5, thì hôm nay tối thứ 2 mình nhận mail pass và sẽ được đi Vancouver 1 bữa!!
Phew! Tạm thời thế thôi, mình cũng ko trông đợi là lần đầu pv amazon mà pass luôn nhận luôn, tuy nhiên vẫn cố gằng hết sức thôi, càng đi xa càng vui. Nhất là giờ tự nhiên được đi du lịch miễn phí.
Sẽ update dần sau.
Nói chung là với ae developer mà muốn thoát thân thì mình chỉ biết nói là học giỏi ngoại ngữ vào, chăm 1 tí, cơ hội sẽ đến với các bạn, và đặc biệt là con của các bạn.
:chaymau:
Gửi bằng vozFApp
 

BaronNashor

New Member
Joined
Sep 18, 2018
Messages
673
Reaction score
2
Đánh dấu bài viết tâm huyết, tiện thể thím có skyp hay fb k em có việc này hỏi chút ạ
 

wp306

New Member
Joined
Sep 29, 2017
Messages
161
Reaction score
0
Nội dung dài mà đọc cũng hay
một phần nó tạo cho mình cái động lực cố gắng.

Chúc mừng thím nhé
 
Top