Vài lưu ý nhỏ cho các bạn đi phỏng vấn Embedded C và C++?
Có vài điểm rất nhỏ, các bạn không để ý có thể dẫn đến bất lợi (nếu không muốn nói là rớt) ở vòng hồ sơ hoặc khi đi phỏng vấn.
Mình liệt kê rất cụ thể ra những chuyện mình đã thấy qua nhiều lần (người thật, việc thật), hy vọng cho các bạn thêm kinh nghiệm.
Lưu ý: Những chuyện này rất chủ quan, có thể chỉ đúng trong môi trường của mình và hoàn toàn không đúng trong môi trường khác.
- Gửi email CV đến không có Cover Letter, chỉ đính kèm mỗi file PDF là cái CV.
- CV ghi :_tiếng Anh: Trung Bình, C: Trung Bình,…nhưng bên dưới lại ghi ưu điểm: là người ham học hỏi…
- CV bằng tiếng Việt và lại viết sai chính tả tiếng Việt.
- CV ghi quá nhiều về các hoạt động tình nguyện, hiến máu, blah blah… nhưng phần kĩ thuật lại có 3 dòng thôi.
- Mặc đồ thể dục của trường và đi dép lê đến PV.
- Đến muộn PV (em ấy bảo bị kẹt xe).
- Đưa yêu cầu, em ấy không hiểu đề nhưng ngại không dám hỏi lại, dẫn đến viết hoàn toàn sai.
- Hỏi ngay câu căn bản đầu tiên em ấy đã nói không biết và đổ do trường không dạy (cụ thể câu hỏi như:
union
là gì ? hoặc sao phải dùnginline
? hoặc sao phải dùngbitfield
…) - Viết hết code vào
main
thay vì dùngfunction
. - Không đặt tên cho biến, dùng
i
,t
,x
thay vìcount
,get_time_ui
,set_time_ui
… - Tất cả các biến đều khai báo dưới kiểu
int
một cách vô tội vạ. -
void main()
thay vìint main()
- Dùng
printf
trong trong codec++
và hầu như không phân biệt đượcc
vàc++
- Khẳng định trường không dạy
pure virtual function
- Không biết làm sao để 2 file source có thể cùng chạy trong một project.
…
Nói chung là mấy điểm sơ sơ vậy, toàn là những thứ các bạn có thể cải thiện một cách dễ dàng. Đề cho fresher thì cực dễ, các bạn không cần phải nắm hết khóa cơ bản của bác @ltd cũng vẫn đủ để pass.
p/s: Bạn nào có thắc mắc nào về những điểm trên hay thắc mắc gì khác thì hỏi nhé.
Cái này làm sao anh nhỉ?
2 file source chạy cùng trong 1 project thì đọc em hiểu chắc ý câu hỏi là muốn hỏi cách link 2 file này lại vậy đúng không??
À ha, đúng rồi em, đơn giản vậy thôi, hoặc là tạo interface trong file
.h
để các file giao tiếp với nhau. Chắc các bạn ít làm project do nhiều người làm nên thường chỉ bỏ hết vào một source. Nói chung chỉ hỏi nguyên lý rất cơ bản thôi chứ không bắt phải làm gì hết em ^^cái nhiều file này e không hiểu lắm ạ, có phải VS sẽ dịch hết các file rồi tìm đến file nào có hàm main đã được dịch và thực thi nó không ạ?
E có code 1 project nhiều file thì e có các file .h thì ở file Source có hàm main e include mấy file .h vào. Còn khi không có file .h thì mình phải include mấy file .cpp.
Vậy với yêu cầu này
thì mình sẽ trả lời là cần include file vào đúng không ạ?
làm gì có include file .cpp…
include file .cpp cũng được mà, đâu có làm sao đâu ạ.
cũng được nhưng ko được. Giả sử cái file cpp đó 10k dòng, file main của em chỉ có 10 dòng, em sửa 1 dòng trong file main cũng phải compile lại cái file 10k dòng kia…
hơn nữa ví dụ có 10 file cpp, em biên dịch 10 file rồi link lại với nhau, nếu 1 file có include file cpp khác thì lúc link sẽ báo lỗi. Thành ra phải thêm ngoại lệ khi link, khi compile
nếu ko có header file thì viết 1 cái header file mà include ~.~
à đấy, thì e cũng có nói là nếu không có file header mà phải chạy 2 source trong 1 project thì cần include file vào để chạy mà.
Tại e không hiểu câu hỏi phỏng vấn làm sao để 2 file source có thể cùng chạy trong một project mặc dù e vẫn hay dùng include. Kiểu này đi phỏng vấn là chết ròi
ý hỏi câu 2 source file chạy chung kia ko có gì to tác đâu, đừng suy nghĩ phức tạp quá. Lý do hỏi câu này là vì có nhiều người thích bỏ tất cả vào 1 file
main.cpp
, ko cần phân chia ra gì hết. Hỏi vậy để biết có phải bạn thuộc dạng này ko.Có vài điểm có thể trả lời trong câu này:
Về mặt build:
Đó là nếu IDE compiler của em tự động build các source thành object và tự link chúng lại với nhau (như VS) thì em cứ để chúng vào chung một project là được. Còn nếu compiler của em không giúp được thì em sẽ build chay bằng tay và dùng linker link các file .o thành file thực thi .exe hoặc .out
Về mặt thực hiện:
Các file phải tuân thủ ODR. Vậy nên file này đã định nghĩa (definition) biến đó thì file kia phải khai báo (declaration) (dùng
extern
chẳng hạn) để tránh lỗi redefine. Tốt nhất thì tạo một file header (.h) để làm interface giữa 2 file source.Cơ bản là vậy, đúng như @tntxtnt nói cái này chỉ để xem bạn làm kiểu gì thôi ^^
à, e dùng VS nên nó tự làm rồi, không phải làm thủ công nữa. Còn cái extern chắc phải học thêm rồi chứ trước giờ chưa dùng ạ.
Bác @BetapCode ở công ty nào vậy ạ.
Anh có thể gợi ý cho em nguồn tài liệu (sách, project, v.v.) bao quát những vấn đề anh ko, qua mấy câu anh hỏi em thấy kiến thức mình hổng khá nhiều chỗ
Không liên quan lắm nhưng cho em hỏi công ty của anh ở TP.HCM hay đâu vậy ạ? Nếu mức các câu hỏi này và nâng cao lên nữa thì em cũng muốn đi phỏng vấn xem sao
@ATu @hoangviet Mình vừa làm cty vừa chạy start up, mỗi cái một nửa time, làm về nhúng hết. Giờ đang xả hơi nên hay lên dnh chém ^^, sắp tới bận lại chắc hông lên thường xuyên được nữa. Bạn cần thêm thông tin cứ inbox mình, mình hơi ngại public. @ATu em cần nộp cv cứ gửi tin nhắn trao đổi với anh, nếu được anh sẽ nộp dùm cho.
Kiến thức cơ bản thì anh thấy quyển này được
amazon.com
C++ Primer (5th Edition)
Stanley B. Lippman, Josée Lajoie, Barbara E. MooBestselling Programming Tutorial and Reference Completely Rewritten for the New C++11 Standard Fully updated and recast for the newly released C++11 standard, this authoritative and comprehensive in ...
4.2 out of 5 stars, ISBN: 978-0321714114, Addison-Wesley Professional, August 16, 2012, $33.86
đừng đọc quyển C++ Primer Plus nhé, quyển đó viết sai.