Resume
•
언어 + 툴들은 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
STAR
•
상황: 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..
Behaviour
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
SDLC
1.
Identify the current problem
2.
establish plan
3.
define requirements
4.
design & prototyping
5.
develop software
6.
test
7.
release
8.
maintenance
Advantage of SDLC
•
Provide one solid goal that everyone can agree and understand
•
Provide solid plan and can assign role
What tools for SDLC
•
IDE
•
Communication Tools
•
Version Control
•
Feature flag (SaaS)
•
CI/CD tools
Memory Allocation
Heap vs Stack allocation
STACK (LIFO - PUSH/POP) | HEAP (Dynamic) | |
Allocation & De-allocation | Automatic by compiler | Manual by programmer |
Access Speed | Faster | Slower |
Access area limitation | Local only | Globally |
CODE AREA
•
Area where the program’s code is stored
•
We call this text area
DATA AREA
•
global/static/constant variables
•
Allocated when program starts and deallocated when terminates
HEAP AREA (FREE SAVE)
•
Programmer needs to alloc and dealloc manually unless there is no garbage collector
•
Dynamic memory location with new and pointer
•
slower than stack
STACK AREA (AUTOMATIC AREA - LIFO)
•
removed when the object is out of its scope
•
also save the address of function
•
faster than heap
C vs C++ Memory Allocation Difference
C
•
Malloc, which is a function
•
Requires stdlib.h to use Malloc
•
Allocates memory in heap
C++
•
New, which is an operator
•
New is included in C++
•
Allocates memory in heap
Overloading vs Overriding
Overloading
•
Use same function name in the same class
Overriding
•
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:
•
unique_ptr
◦
only one unquie_ptr can own only one object
◦
Can’t be copied but can transfer ownership
•
shared_ptr
◦
count how many smart pointer refer the one object
◦
The number of smart pointer refers the one object is called reference count
•
weak_ptr
◦
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
리소스의 획득은 초기화이다.
Algorithms
DFS vs BFS
DFS - Depth-First Search
BFS
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?
•