Chuyện ứng tuyển ở công ty G

Hôm nay rảnh rỗi, mình xin kể lại quá trình ứng tuyển vào công ty G. (ai chơi Dota cũ hoặc chơi Liên minh thì chắc hẳn sẽ biết G. này).
Như thường lệ, mình đọc được tin tuyển dụng của công ty G. trên trang facebook tuyển dụng của khoa CNTT, ĐH KHTN. Yêu cầu chung của công ty này khác hẳn những công ty thông thường. Đó là yêu cầu cao về giải thuật, không yêu cầu về công nghệ, ngoài ra còn cần một số kiến thức liên quan đến hệ điều hành, mạng, cơ sở dữ liệu… Cảm thấy có lẽ công ty chấp nhận sinh viên sắp ra trường hoặc mới tốt nghiệp nên mình ứng tuyển thử.

  • Vòng 1 Paper test: mình làm một bài kiểm tra giấy, trong đó câu code quan trọng nhất là yêu cầu ghép 2 danh sách liên kết có thứ tự tăng dần thành 1 danh sách liên kết mới cũng thứ tự như vậy. Do đã được chị nhân sự phổ biến trước nên mình đã ôn kiến thức này và làm một số bài tập trên codefight.com. Ngoài câu hỏi code là những câu trắc nghiệm liên quan đến hệ điều hành, các giao thức mạng, viết câu SQL theo yêu cầu. Không câu nào là dễ ăn cả.
  • Vài ngày sau khi đi test, mình nhận được điện thoại từ chị nhân sự, báo rằng em đã đậu với điểm 10/16, không cao nhưng vừa đủ. Thế là chị phổ biến những kiến thức cần chuẩn bị cho vòng sau. Về giải thuật, cần ôn lại Bảng băm, cây nhị phân, thuật toán sắp xếp (Quicksort, Merge sort)… Về hệ điều hành, ôn về thread, process, bộ nhớ ảo… Về mạng, tìm hiểu về TCP và UDP, các giao thức mạng (sau khi hỏi thằng bạn và tìm hiểu google thì biết được phần nào)… Về cơ sở dữ liệu, chỉ nghe là đánh index sao cho tối ưu (???).
  • Vòng 2 Technical test: Mình được phỏng vấn với một anh kỹ thuật. Câu hỏi đầu tiên, anh ấy hỏi mình về khác nhau giữa TCP và UDP, HTTP. Mình trả lời cũng được nhưng chỉ ở mức quan niệm (concept), còn cơ chế hoạt động ra sao thì không rành. Sau đó thì anh ấy hỏi mình một số kiến thức JAVA do thấy mình có ghi trong CV, thế nhưng mình cũng không rành gì nhiều ngoài những kiến thức OOP căn bản. Sau đó thì anh bắt đầu kiểm tra giải thuật. Câu hỏi đầu tiên là “ttttbcccaa” -> “t4bc3a2”, hãy viết hàm compress và decompress để chuyển đổi qua lại 2 chuỗi trên. Sau một hồi suy nghĩ thì mình code được, nhưng vì tư duy code chạy được trước khi tối ưu nên code không được tối ưu (mình nghĩ nếu có thời gian nhìn lại code thì mình cũng sẽ tối ưu hoá thôi). Sau khi làm xong bài này, anh ấy ra một đề nữa, đó là viết hàm trừ 2 số BigInt (số dạng string). Khi ấy gần 4g chiều, mình code mà anh ấy hối mình gấp nên mình viết ra một đống code không ưu nhìn cho lắm và không chạy được. Anh ấy nói thôi rồi cho mình đi về. Lúc lấy xe ra về, mình mới nhận ra bài này tuy không khó nhưng có nhiều thứ cần xử lý, không phải gấp là làm được, dù mình đã từng làm bài này rồi. Thế nhưng mình chấp nhận và chờ phản hồi.
  • Gần một tuần không thấy thông báo, mình liền chủ động chat skype hỏi chị nhân sự. Chị ấy thông báo mình rớt rồi do yêu cầu công ty cao hơn.
    Qua dây, mình biết được rằng việc làm liên quan đến giải thuật dù hiếm nhưng không phải là không có, thậm chí là lương cao nữa. Đây đúng với định hướng của mình, nhưng tiếc là trình độ chưa đủ. Nghe nói nếu được nhận vào làm thì lương sẽ là 2000 (USD hay SGD không rõ). Hy vọng trong tương lai sẽ đạt được.
8 Likes

Hi Trương Minh Triết.
Múc lương ấy cũng không chắc đâu, đấy là chưa tính thuế, bảo hiểm cộng cả thưởng các thứ vào v.v.v…

Chưa hiểu ý bác lắm??? Nhưng mình nghĩ ra trường mà lương 1k là giỏi rồi

Garena hả bạn? Mình cũng chuẩn bị thử sức sau khi thi xong học kì 1 này!

Nếu bạn là một competitive programmer thì có thể thử sức.

2 Likes

Bạn ứng tuyển vào vị trí gì vậy? Java Dev hả?

Chỉ ghi là software engineer thôi, không yêu cầu công nghệ nào.

Với một cty bự con như G. thì việc một ngày phải xử lý số lượng người dùng cũng như traffic cực kỳ khủng hoảng trên cả chục game mà họ phát hành + quản lý servers thì yêu cầu tuyển dụng cao và thâm để phát triển + vắt performance để xử lý request với database đến giọt cuối cùng cũng không phải lạ cho lắm :joy: :joy: :joy:

1 Like

Bỏ mấy cái râu ria, 2 bài toán Technical bạn giải như thế nào? :grinning:

1 Like
//Hàm compress
int continuous = 0;
StringBuffer result = new StringBuffer();
int i;
for(i = 1; i < input.length; i++)
{
      if(input[i] == input[i-1])
            continuous++;
      else
      {
            if(continous == 0)
                  result.append("%c",input[i-1]);
            else
                  result.append("%c%d", input[i-1], continuous + 1);
            continuous = 0;
      }
}

//xử lý ký tự cuối input
if(continous == 0)
      result.append("%c",input[i]);
 else
      result.append("%c%d", input[i], continuous + 1);
return result.toString();

Code này tốt hơn code mình viết lúc phỏng vấn, do thong thả nên tối ưu được một chút nhưng vẫn cách làm như vậy.

1 Like

Bạn nên cache độ dài của string ở ngoài vòng lặp để tránh query length ở mỗi iteration:

int length = input.length;
for(i = 1; i < length; ++i) ...

Bạn có thể cache luôn cả string đầu vào, nếu input 2 lần đều giống nhau thì không cần compress 2 lần

string s;
string compress(string in)
{
    if (s == in) // Vẫn chuỗi cũ, trả về kết quả cũ
      return ...;
    else // Chuỗi khác? Nén chuỗi đó...
      s = in; // ...và lưu kết quả lại để so sánh lần sau
}

Bạn tham khảo https://en.wikipedia.org/wiki/Huffman_coding.

3 Likes

2 câu, nhưng vẫn còn cùi bắp quá. :frowning:
P/s: sửa lại
https://ideone.com/FrLqb5

1 Like

Nhiều công ty có người ứng tuyển không đỗ thì không thông báo hay email gì cả. rõ chán

3 Likes

Nhiều chỗ tuyển nhân sự cũng dở hơi, bạn gái mình nộp hồ sơ vào 2 chỗ, chỗ nhận và chỗ không hồi âm, mà cả 2 - 3 tháng trời không gọi nhắn gì luôn :joy: Ngày xui xẻo nào đó chỗ không hồi âm đó gửi email lại, giải thích vì lúc đó chỗ chị đang full slot nên không tuyển thêm, giờ có người nghỉ nên thiếu mới reply lại ¯ \ _ (ツ) _ / ¯

1 Like

Hi Florastamine
Cái đó là bình thường. Mấy công ti os thì đi về về như com bữa. Họ ỉm đi để giữ người thôi.

1 Like

Mình nghĩ ít ra cũng phải hồi âm cho họ biết kết quả (trường hợp này là không reply gì cả). Vả lại nếu không hồi âm thì họ cũng sẽ mặc định rớt, và nộp chỗ khác, sau đó chỗ cũ email lại họ thì xác suất họ chấp nhận lời mời là rất thấp, vì không tìm được việc thì họ sẽ nộp ngay chỗ khác chứ không ai ngồi không cho tới khi họ gọi tới lượt mình.

1 Like

In the EU and in the US the “slaves” are treated much better. Such an interview is spoken quickly around like wildfires and companies which exercise this interviewing way will be in dire consequences: Nobody applies for a job -even they may promise “a heaven on earth” to you. I wonder that VN claims itself as a “Cộng hòa Xã hội Chủ nghĩa Việt Nam” but some companies in VN do exactly the opposite: they chicane the youngsters as if they were less than the slaves.

Let me ask this forum a question: The above string is compressed to t4bc3a2. How many bytes are saved? 3 bytes. And such a repetitive sameness (tttt) is rare, very rare. Also: a silly test. Further: if a mediocre programmer wrote a bad program that is as fat as a pregnant potbelly pig

and runs as clumsy as a sloth

then all the “compress - decompress” effort becomes meaningless.

1 Like

Well, $2000 can be a salary for senior programmers or managers in Vietnam. For fresh graduates, the pay could be $200 minimum.

This is not about shrinking the string to save memory. The main purpose of this exercise is to test the candidate’s programming skill when he encounters a problem. This is an easy test, like a FizzBuzz test.

@tmt1802

You know, an IT freshbie starts in Germany max. 50K€. A senior IT developer with >5yrs experience makes ca. 90K€ (same in France). In the States the discrepancy is only around the double (starting max. 60K US$ - 120K US$). And you tell me [quote=“tmt1802, post:19, topic:61259”]
Well, $2000 can be a salary for senior programmers or managers in Vietnam. For fresh graduates, the pay could be $200 minimum.
[/quote]

A discrepancy of 10x between a senior and a freshbie. What a world! Capitalism versus Socialism

Actually, the pay for senior is roughly about $1000. Above that, you must be an expert or tech lead.
$200 is the salary for a fresher because (s)he has to take a training course for about 3 months before joining a project, since Bachelor degree is unreliable to companies. There are some companies don’t offer any cash for trainees. However, after being trained, the salary could be 6 - 10 million dongs (~ $300 - $500).
I’m still a student and this is all I know.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?