date
Jan 5, 2026
slug
mock-intern
status
Published
tags
Blockchain
summary
Mock câu hỏi phỏng vấn Intern
type
Post

I. Nền tảng Blockchain & Ethereum

1. Blockchain là gì? Khác database truyền thống?
Blockchain là sổ cái phân tán (distributed ledger), dữ liệu được ghi theo block, không thể sửa, chỉ có thể append.
Khác DB:
  • Không có admin trung tâm
  • Dữ liệu immutable
  • Trustless, minh bạch
  • DB truyền thống: CRUD, centralized, có thể rollback

2. Ethereum khác Bitcoin ở điểm nào?
  • Bitcoin: chuyển tiền, scripting hạn chế
  • Ethereum: chạy smart contract, có EVM, dApp, DeFi, NFT

3. Smart Contract là gì? Chạy ở đâu?
Là chương trình chạy trên blockchain (Ethereum), được execute bởi EVM, không thể sửa sau deploy.

4. EVM là gì?
Ethereum Virtual Machine – máy ảo thực thi bytecode smart contract, đảm bảo mọi node chạy ra cùng kết quả.

5. Gas là gì?
Đơn vị đo chi phí tính toán trên EVM. Trả gas để:
  • Chống spam
  • Khuyến khích miner/validator

6. Out-of-gas thì sao?
  • Transaction fail
  • State rollback
  • Gas vẫn bị mất

7. Block – Transaction – State?
  • Transaction: hành động
  • Block: tập transaction
  • State: trạng thái hiện tại của blockchain

8. Public vs Private blockchain?
  • Public: ai cũng tham gia (Ethereum)
  • Private: giới hạn node, thường dùng nội bộ doanh nghiệp

II. Solidity cơ bản

9. Solidity là gì?
Ngôn ngữ high-level, compile sang EVM bytecode.

10. uint vs uint256?
uint = uint256 (256-bit, mặc định)

11. Visibility?
  • public: mọi nơi
  • external: bên ngoài
  • internal: contract + kế thừa
  • private: chỉ trong contract

12. view vs pure?
  • view: đọc state
  • pure: không đọc, không ghi

13. storage, memory, calldata?
  • storage: lưu on-chain, tốn gas
  • memory: tạm, trong function
  • calldata: read-only input

14. Mapping là gì? Iterate được không?
Key → value, không iterate được vì không lưu danh sách key.

15. Struct dùng để làm gì?
Gộp nhiều biến thành 1 kiểu dữ liệu.

16. require, revert, assert?
  • require: check input
  • revert: manual rollback
  • assert: check logic, invariant

17. Constructor là gì?
Hàm chạy 1 lần khi deploy contract.

III. Account & Transaction

18. EOA vs Contract Account?
  • EOA: có private key
  • Contract: không key, chạy code

19. msg.sender, msg.value, tx.origin?
  • sender: caller trực tiếp
  • value: ETH gửi
  • origin: EOA gốc

20. Vì sao không dùng tx.origin?
Dễ bị phishing attack.

21. Contract A gọi B → msg.sender là ai?
Là contract A.

IV. Ether & Payable

22. payable là gì?
Cho phép function/contract nhận ETH.

23. Contract nhận ETH bằng cách nào?
  • payable function
  • receive()
  • fallback()

24. transfer vs send vs call?
  • transfer/send: giới hạn gas (2300)
  • call: flexible, recommended

25. Cách gửi ETH an toàn nhất?
call{value: amount}("") + check return.

V. Events

26. Event là gì?
Log để frontend/indexer đọc.

27. Event có lưu state không?
Không, chỉ lưu trong log.

28. Frontend đọc event thế nào?
Qua RPC/Web3/ethers.js.

VI. Security cơ bản

29. Reentrancy là gì?
Contract bị gọi lại trước khi update state.

30. Checks-Effects-Interactions?
  • Check điều kiện
  • Update state
  • Gọi external

31. Overflow/Underflow?
Solidity >= 0.8 auto revert.

32. Front-running?
Bot reorder tx để kiếm lợi.

33. Vì sao không dùng timestamp random?
Miner có thể điều chỉnh.

34. selfdestruct để làm gì?
Xóa contract, gửi ETH đi. Có rủi ro mất kiểm soát.

VII. Gas

35. Vì sao storage tốn gas?
Ghi state on-chain, lưu vĩnh viễn.

36. Loop lớn nguy hiểm?
Có thể out-of-gas.

37. Vì sao không lưu nhiều data on-chain?
Gas cao, không scale.

VIII. ERC Standards

38. ERC20 là gì?
Token fungible.

39. ERC721 khác ERC20?
NFT – mỗi token là duy nhất.

40. approve & transferFrom?
Cho phép spender tiêu token.

41. Approve double-spend?
Approve mới trước khi reset về 0 gây race condition.

IX. Testing & Tooling

42. Hardhat / Foundry?
Framework dev & test smart contract.

43. Test SC khác backend?
  • Immutable
  • Gas
  • Blockchain context

44. Testnet là gì?
Mạng test không dùng tiền thật.

45. ABI là gì?
Interface để frontend gọi contract.

X. Tư duy

46. Gửi ETH nhầm vào contract không rút được?
ETH bị lock vĩnh viễn.

47. Upgrade contract thế nào?
Proxy pattern.

48. Vì sao không sửa code sau deploy?
Immutable bytecode.

49. On-chain vs Off-chain?
  • On-chain: logic quan trọng
  • Off-chain: compute nặng

50. Voting contract lưu gì?
  • Danh sách candidate
  • Mapping voter → voted
  • Vote count

© Hiếu Trần 2020 - 2026

Tip: Use console.table() for better array logging!