
오늘은 뭐...했나요?
오늘은... 아침까지 포트폴리오 만들다가... (그와중에 또 들인 시간에 비해서 대단한 건 못했어요) 점심 때 멘토님과 모의 면접을 봤습니다.
- 첫 모의면접이라 낯설고 어렵기야 하겠지...라고 막연하게만 생각했는데 실제로 해보니까 더 낯설고 더 어려웠어요
- 알고 있다고 생각했던 것들도 막상 설명해보라 하니 헷갈리고 이게 맞나 싶고 엄청 버벅였습니다
- 어떻게든 아는 걸 짜내려고 하다가 별로 상관 없는 내용이나 틀린 내용을 말하게 되는 것 같아 점점 갈팡질팡하게 됐구요
- 그리고 이름만 들어봤고 설명은 아예 못하는 질문들도 많았습니다
- 이걸 취준생이라고 할 수 있을까 하고 낙담했는데 멘토님께서 첫 모의 면접이니 모르는 게 많을 수 밖에 없고, 대답 잘 못하는 게 당연한거라고 격려해주셨어요
- 하지만 이제 더 이상 당연하면 안되겠죠...
- 제시된 질문의 리스트는 아래와 같습니다.
- 웹 스토리지/로컬스토리지와 세션스토리지의 차이 (얼추 잘 대답함)
- 이벤트 버블링이 뭔지 (조금 횡설수설하긴 했지만 대답은 했음)
- 웹 페이지에 진입할 때 브라우저가 어떤 과정을 거쳐 작동하는지
- 자바스크립트 비동기 처리 : async/await과 promise는 무엇인가?
- async 요청이 성공했을 때의 return 값은 어떤 식? + promise의 경우는?
- Babel의 역할 (리액트와 엮어서 설명했는데 그냥 구 ES문법을 최신 문법으로 바꿔주는 역할이라고 간단하게 설명하는 게 낫겠다고 하셨음. 연관되서 자주 나오는거 : 웹팩)
- 리액트에서 리렌더링이 되는 경우 (잘 모르는 개념을 억지로 설명하느라 엄청 횡설수설함. 상태가 변경될 때, props로 받아오는 값이 변경될 때, 부모 요소가 리렌더링될 때 자식도 같이 리렌더링~이라고 짧게 설명 가능)
- 리액트의 라이프사이클 설명 (답변못함)
- 리액트의 useMemo, useCallback이 뭔지 (답변못함. 성능 향상을 위해 사용하는 훅이고, useMemo = 값을 기억 / useCallback = 동작을 기억)
- 프로젝트에 적용한 HOC라는 개념 설명해봐라 (분명 발표까지 한 내용인데... 준비가 안돼있어서 횡설수설함)
- axios 선택한 이유 : 익숙하고 편의성도 좋아서... 더 할 얘기가 있을텐데!!!
- Peony 프로젝트에 Recoil 사용한 이유 (Redux의 장점과 단점 설명하고, 프로젝트 규모와 기간 상 Recoil로 간결하게 구현하는 게 낫겠다고 판단했다는 답변)
- 알고리즘 문제 풀이 계속 했다고 했는데 링크드 리스트가 뭔지 (대답못함... 사실 알고리즘 안풀었음... 침울하다...) (배열이랑 비슷한 개념으로 자료구조의 일종인데 프론트엔드한테도 많이 물어본다고 함)
- 버추얼 돔 개념 (얼추 설명하긴 했는데 이게 맞나? 싶어서 엄청 버벅임. 리페인팅=> 뷰포트에 출력하는거 리플로우 =>DOM구조가 변경됐을 때 노드들의 위치나 크기를 다시 계산하는거 라는 걸 배움)
- props와 상태의 차이 (뭔지 아는데 설명 못함... 프롭스=부모한테서 받아오는거/읽기 전용, 상태=계속 변경되는 값)
평가 및 조언 : (설명은 못했지만) 개념에 대해서는 많이 알고 있는 것 같다. 질문 받았을 때는 질문에 대한 답변만 간단하게 하는 게 좋다. 부가적인 설명을 하면서 말이 길어지면 꼬리질문이 점점 늘어날 수도 있고... 실제 면접에서 뎁스를 한단계만 더 깊게 해서 꼬리질문해도 어버버할 수도 있음. 설명하다가 '이게 맞나?' 싶어서 미궁에 빠질 수도 있따
너무 장황하게 하면 말이 너무 길다는 소리를 듣거나~ 아는척한다는 인상을 줄 수도 있어서~ 모르면 모른다고 하고 간단하고 솔직하게 답변하는 게 더 좋음
아래는 동기분 면접에서 나왔던 질문들입니다
1. 고차함수의 종류와 설명
2. for 반복문과 고차함수 map의 차이
3. 원시자료형과 참조자료형의 차이와 종류
4. 스레드가 뭔지 (https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html)
5. REST API가 뭔지 아는 것만 말해보라
6. 그럼 RESTful하다는 건 뭔가?
7. HTTP 메서드의 종류와 역할
8. PUT과 PATCH는 둘 다 수정할 때 쓰이는데, 둘의 차이는?
9. callback, promise, async/await에 대한 설명
10. 얕은 복사와 깊은 복사 차이
11. 리액트는 라이브러리고 넥스트js는 프레임워크라고들 하는데, 라이브러리와 프레임워크의 차이는? (https://velog.io/@ahn-sujin/React-%EB%A6%AC%EC%95%A1%ED%8A%B8%EB%8A%94-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC)
12. useMemo, useCallback
13. 함수형 컴포넌트와 클래스 컴포넌트의 차이
14. 프로젝트에 리액트 쿼리의 캐싱으로 성능 향상했다고 되어있는데 이거 자세히 설명좀
15. 개인프로젝트를 Next.js를 이용한 SSR로 구현했는데, CSR과 SSR의 차이점은?
16. 타입스크립트에서 type과 interface의 차이
이정도로 질문하셨고, 지금까지 나온 질문들은 다 자주 나오는 것들이니 재깍재깍 답변이 나올 만큼 배우고 정리해서 달달 외우라고 하셨어요
아래는 팁
- 인성, 협업 능력 관련 질문이 나올 수도 있음. 자주 나오는 질문들= 프로젝트 진행 방식, 스프린트 구성, 데일리스크럼 했는지... 가장 어려웠던 질문은 경력이 많은 사람을 뽑을 수도 있는데 왜 신입 개발자를 뽑아야 하는지
- 회사 지원하기 전에 웹, 앱 정독하고 사용해보고 문제점도 분석해보기
- 공고에 있는 자격 요건 = 면접에서 물어볼 거니까 준비하라는 뜻
- '회사에 대해 궁금한 점 있나요?' 같은 질문에는 '사내에 개발 스터디 문화가 있는지, 코드 리뷰를 받아볼 수 있는지, 프로젝트 시작 과정은 어떻게 되는지' 등 좋은 인상을 남길 수 있는 질문 하면 좋음
- 면접 가기 전에 서비스를 꼭! 한번 사용해보고 갈 것 (안해보고 갔다가 혼난 적 있으심..)
- 모르는건 빠르게 모른다고 하기!
- 기술 면접에 너무 자신이 없으면 과제 전형 있는 곳으로 지원하는 것도 방법
- 아무튼 오늘 나온 질문은 다 답변할 수 있는 상태로 만들어둬야 함