Interview Hack

Parent item


언어 + 툴들은 work experience / project based
If you cannot actually do tech interviews in every language you put under resume, don’t say it, it’s your weakness
Use Achieved X by performing Y, measured in Z format
Your work experience is not your work summary
soft skill을 넣고 싶은거라면 soft skill만이 표현할 수 있는 부분을 강조하라 괜히 보통 적듯이 수치적으로 넣지말고 soft skill만이 표현할 수 있는 점을 강조하라
레쥬미 크리틱은 꼭 받자 가능하다면 실무자에게 괜히 사부가 있는게 아니다..
단순히 tech를 나열하지 말자
너가 어떻게 회사에 도움을 줬는지 그걸 어떻게 어필할지 고민해야한다.
너가 그런 기술을 쓸 수 있다는게 중요한게 아니다. 사실 회사라면 그냥 교육을 시킬 수 있다. 그 전에 너가 어떤 사람인지 어떻게 남들과 다른지를 표현해야 붙여줄거 아니겠냐 우리는 단순 개발을 하는 테크니션이 아니라 엔지니어로서 지원하는거다
어떤 툴이든 프로젝트에 가장 잘 맞는 툴을 선택할 수 있는 능력과 쉽게 픽업할 수 있다는게 엔지니어로서 중요하다

Methodology for Interview


상황: Describe the situation
일: Describe the task
행동: Describe the action taken to handle the task
결과: Share the results achieved

Estimated questions based on interview time (my experience)

~20min: behaviour
~30min: mostly behaviour + could be one simple algorithm question
~60min: must be technical question like leetcode
~120min: probably ask you to create a web service or something..


Explain yourself

Why did you apply to this position/the company?

내가 기여할 수 있는 / 내가 성공시킬 수 있는 / 내가 완성할 수 있는 “일”에 대해 설명
직무 지원동기 (전문 역량) / 산업군 지원동기 (전문 지식) / 회사 지원동기
~을 완성(성공)해보고 싶다.
관심을 갖게 된 배경 (산업 & 직무)
직무/산업군 지원 동기
관련 전문 지식
회사 지원동기
저번 텀 코업에서 Engineering Manager과 SDLC, Clean Architecture, Agile 등에 얘기를 해보며 개발을 단순히 제품 단위에서 볼 것이 아닌 제품을 만드는 회사 관점에서 프로세스를 봐야한다는 관점을 배우게 되었다. 즉, 어떻게 개발을 효율적으로 할 것이냐가 회사에게 있어서 매우 중요하다는 점이었다. 이후에 나는 서비스를 만들 때 어떠한 고객의 기대가 이 제품을 만들게 하였고, 계속 이용하게 하였고, 제품 사용에 어떤 문제가 있냐를 생각하며 customer experience를 고려하게 되었다. 하지만 이는 개인의 행동이기 때문에 회사 관점에서는 개발자들이 매니저 한 사람에게 의존하지 않고 모두가 하나로서 움직일려면 개발자 툴이 중요하다는 것을 깨닫게 되었다. 즉, 이러한 문제들을 engineering으로서 해결해보고 싶었다.
At the previous co-op term, I had a chance to chat with my Engineering Manager to talk about SDLC, Clean Architecture, and Agile. At that time, I learned we shouldn’t see the development just as an action to create a product, instead, we need to see the process from the perspective of the company. That is, how to develop efficiently is very crucial to the corporation. After this conversation, when I create service, I always consider customer experience, for example, which customers’ expectations made us develop this product or made them use it more and which obstacles exist when they use the product. However, this is just one person’s principle. From the company’s view, to make developers think like one person and not let them rely on one manager, I realized that we need a developer tool. That is, I wanted to solve these kinds of problems in engineering. Like simplifying everyday tasks that are redundant and can be automated, vastly improving efficiency and contributing to engineering excellence. If you pick me, I would like to contribute to creating such a developer tool that can tell what to do for the next step and every Apple developer around the world can trust.

Tell me about a time you completely failed. How did you bounce back from it?

I would say it’s from high school. I came to Canada when I was grade 10. It was quite hard time for me to adjust in new environment and to live with only English. I came to Canada to go the university of Waterloo computer science program, which requires us to have more than mid 90s. However, I failed some courses and usually got 60s at the first year. Instead of disappointment, I made a new strategy. I knew that UWaterloo also see the extra curricular and programming experience. So, rather than focusing on studying, which is my weakness compare to other Canadian students, I also did some side projects, participate in mathematics competitions, and did lots of extra curricular. Of course, I studied hard as well. Thus, I could get 70s average next semester, 80s on grade 11 and mid 90s on grade 12 and finally got into the program.

Software Development Life Cycle


Identify the current problem
establish plan
define requirements
design & prototyping
develop software

Advantage of SDLC

Provide one solid goal that everyone can agree and understand
Provide solid plan and can assign role

What tools for SDLC

Communication Tools
Version Control
Feature flag (SaaS)
CI/CD tools

Memory Allocation

Heap vs Stack allocation

HEAP (Dynamic)
Allocation & De-allocation
Automatic by compiler
Manual by programmer
Access Speed
Access area limitation
Local only
Area where the program’s code is stored
We call this text area
global/static/constant variables
Allocated when program starts and deallocated when terminates
Programmer needs to alloc and dealloc manually unless there is no garbage collector
Dynamic memory location with new and pointer
slower than stack
removed when the object is out of its scope
also save the address of function
faster than heap

C vs C++ Memory Allocation Difference

Malloc, which is a function
Requires stdlib.h to use Malloc
Allocates memory in heap
New, which is an operator
New is included in C++
Allocates memory in heap

Overloading vs Overriding

Use same function name in the same class
Change a function defined in the parent class at the child class
Good to put override after the function name

Smart Pointer

Implement raw pointer to smart pointer so that smart pointer can automatically delete the raw pointer once smart pointer dies
There are three types of smart pointer:
only one unquie_ptr can own only one object
Can’t be copied but can transfer ownership
count how many smart pointer refer the one object
The number of smart pointer refers the one object is called reference count
can access to the object that shared_ptr instance owns but wouldn’t include in reference count
if there are shared_ptr refers each other, reference count can’t be never zero; this event is called circular reernce

RAII design pattern

Resource Acquisition is Initialization
리소스의 획득은 초기화이다.



DFS - Depth-First Search

Questions to ask to interviewer

Could you elaborate on day-to-day responsibilities for this position?
What was the most interesting task you have done recently?