Read it Before Code (Algorithm) Interview


Ask how many questions the will ask

Clarify the questions

  • Take time to draw some examples to understand the question
    • all different cases, extreme cases
  • Ask the range of input
  • Duplicate in the data
  • Whether I can change/reuse the input
  • Ask whether I have used all useful info, whether I missed anything

When Write code

  • Extract some functions aggressively
    • Otherwise you may repeat a lot of code
    • Focus the main part first, define what parameters it needs
    • Leave the implementation later, interviewer may just ignore it
  • Add To-Check tag where the code may be trick or error prone
    • < or <=, len or len-1;
  • What states, variables we need
  • How do we change them
  • Leave some spaces (where you think you may need add some code later, and if the white board is big)

Recheck the code carefully

  • First focus on the main logic, error-prone part
  • Also check all code
  • Use different (simple) use cases to find the problem in the code/algorithm

Compare different approaches

  • Always think whether there are better approaches (and say it)
  • The different approaches may be easier to code or have better runtime (or space) complexity
  • When you think you can implement it different ways or have different approaches, make sure it works and you choose the one that’s easier to implement
    • Sometimes, the other approach may be not work

Communication

  • Le the interviewer your thinking process, different approaches you are trying

What data structures to use:

  • Stack
  • PriorityQueue
    • Examples: LeetCode 767 - Reorganize String
    MultiChar mc1 = pq.poll(), mc2 = pq.poll();
    if (--mc1.count > 0) pq.add(mc1);
    if (--mc2.count > 0) pq.add(mc2);
  • TreeMap, TreeSet\
    • Use it when need keep some order
    • Need (binary) search the key
    • Examples: Interval
Interval
  • TreeMap, sort by start or end

Labels

adsense (5) Algorithm (69) Algorithm Series (35) Android (7) ANT (6) bat (8) Big Data (7) Blogger (14) Bugs (6) Cache (5) Chrome (19) Code Example (29) Code Quality (7) Coding Skills (5) Database (7) Debug (16) Design (5) Dev Tips (63) Eclipse (32) Git (5) Google (33) Guava (7) How to (9) Http Client (8) IDE (7) Interview (88) J2EE (13) J2SE (49) Java (186) JavaScript (27) JSON (7) Learning code (9) Lesson Learned (6) Linux (26) Lucene-Solr (112) Mac (10) Maven (8) Network (9) Nutch2 (18) Performance (9) PowerShell (11) Problem Solving (11) Programmer Skills (6) regex (5) Scala (6) Security (9) Soft Skills (38) Spring (22) System Design (11) Testing (7) Text Mining (14) Tips (17) Tools (24) Troubleshooting (29) UIMA (9) Web Development (19) Windows (21) xml (5)