🐈오늘 공부한 것
✔️기술면접 대비
오늘 과정에서 제공된 기술 면접 예상 질문에 대한 답변을 정리해 보았다.
질문 1 : Promise의 기능과 필요한 이유에 대해서 설명해 보세요.
프로미스는 비동기 요청의 결과값을 담을 수 있는 객체입니다. 프로미스 객체를 사용하기 이전에는 콜백함수를 사용해서 비동기 요청의 순서를 제어할 수 있었는데, 콜백함수가 이어지면 가독성이 떨어지고 유지보수가 힘들다는 단점이 있습니다. 프로미스 객체를 사용하면 then 메서드를 체이닝하여 콜백함수를 중첩시키지 않고도 실행 순서를 제어할 수 있다는 장점이 있습니다.
질문 2 : 순수 함수란 무엇인가요? 불변성/ 사이드 이펙트와 연관지어 설명해 주세요.
순수함수란 입력된 데이터에 대해서 동일한 결과를 보장하는 함수를 의미합니다. 외부 상태에 의존하거나 외부의 데이터를 변경시키지 않고, 입력된 데이터를 변경시키지 않는 함수로 예측 가능한 결과를 보장하기 때문에 에상치 못한 에러의 발생을 줄일 수 있습니다.
질문 3 : 리액트의 state와 props 에 대해서 설명해 주세요.
state는 컴포넌트 내부에서 변경되는 값을 의미하고, props는 상위 컴포넌트에서 전달받는 데이터를 의미합니다. 서로 다른 데이터를 가진 여러개의 중복 컴포넌트를 생성할 때 그 상위 컴포넌트에서 props로 데이터를 전달해 컴포넌트의 재사용성을 높일 수 있습니다. props는 부수 효과를 방지하기 위해서 하위 컴포넌트에서 변경하지 않고, 변경되어야 하는 값이 있다면 state에 등록해서 관리할 수 있습니다. 리액트는 state의 변경을 자동으로 감지하여 화면에 리렌더링 하기 때문에 변경될 때마다 화면이 바뀌어야 한다면 state를 사용해야합니다.
질문 4 : 리액트의 key 속성에 대해서 설명해 주세요.
리액트에서는 변경이 일어날 때 변경이 일어난 부분만 식별하여 리렌더링을 하는데 이 때 필요한 값입니다. 배열을 이용해 map으로 같은 컴포넌트를 여러개 생성할 때 부여하는 고유한 값으로 배열의 length 처럼 변하기 쉬운 값 보다는 id와 같이 고유한 값을 key 값으로 사용해야 합니다.
질문 5 : useEffect의 dependency array 에 대해서 설명해주세요.
useEffect가 실행되는 조건을 설정해줄 수 있습니다. useEffect의 두 번째 인자로 빈 배열이 전달되면, 컴포넌트 마운트시에만 useEffect를 실행하고, 배열에 특정 상태 값이 전달되면 컴포넌트 마운트시 그리고 해당 상태값이 업데이트 될 때 useEffect를 실행합니다.
오늘 받았던 피드백!
CSR과 SSR의 차이점 같은 완벽하게 준비되지 않은 질문을 받았을 때, 급하게 답변한다는 피드백을 받았다. 내용은 좋은데 정리가 안되어서 말이 급하게 나오는 것 같은데, 느리더라도 차분하고 정확하게 내용을 전달하려는 연습이 필요할 것 같다. 모든 질문에 대해서 답변을 준비하지는 못했는데, 오늘 기술 면접에 대비하면서 생각보다 내 언어로 바로바로 답변하는게 조금 힘들다는 생각이 들었다. 이번 주말에는 섹션 2 복습겸 해당 질문들에 대해서 답변을 해보는 연습을 해야겠다.
✔️섹션 2 회고 작성
https://friedegg556.tistory.com/201
자바스크립트 심화 및 리액트, 네트워크와 웹서버까지 두루두루 배우고 연습할 수 있었던 섹션 2가 벌써 끝이났다. 기술면접 질문을 준비하면서도 느꼈지만 이 중에서 내가 내 언어로 제대로 대답할 수 있는게 몇 개나 있을까싶다. 매일매일 복습은 하는데 일주일 단위로 추가로 복습을 해야할 것 같다. 적어도 코스에서 배운 내용만큼은 제대로 답할줄 알아야한다!
✔️TIL 스터디 발표모임 : sync와 async / blocking과 non-blocking
오늘 스터디 발표 모임에서는 블록킹-논블록킹과 sync-async 에 대해서 연결지어 설명해주셨다. 싱크와 에이싱크(동기와 비동기) 그리고 블록킹과 논블록킹은 하나가 아니라 각각 별개의 것이며, 웹 분야에서 주로 싱크-동기 에이싱크-비동기 이렇게 연결지어서 사용하는게 효율적이기 때문에 하나의 개념으로 보여지는 것 같다. 그냥 블록킹과 논블록킹이 동기함수와 비동기함수의 작동 방식이라고만 알고있었는데 이걸 별개로 생각할 수 있다는게 전혀 생각 못했던 관점이라 신기했고, 뭔가 엄청 헷갈린다.
설명해주신 내용을 바탕으로 다시 정리하면, 블록킹과 논-블록킹은 함수의 제어권을 넘겨주느냐 넘겨주지 않느냐의 차이이고, sync와 async는 다른 함수를 호출해서 받아온 결과값을 바로 처리하느냐 혹은 나중에 원하는 시점에 처리하느냐의 차이라고한다. 그래서 sync와 논블록킹, async와 블록킹 이런 방식으로도 함수를 제어할 수 있는데, async와 논블록킹 조합은 node.js 와 mySql을 조합해서 사용할 때 의도치 않게 일어날 수 있는 일이라고. 아시겠지만 node.js 는 비동기 방식으로 동작하고 mySql은 블록킹 방식이기 때문이다. 뭔가 실생활을 예시로 들어주셔서 개념이해는 괜찮았는데 실제 코드에서는 어떻다는것인지 잘 이해가 되지 않는 부분이다.
1. express 라우팅 공부해서 정리하기 **
2. 알고리즘 남은 문제 풀고, 책 읽으며 개념정리하기
3. 섹션 2 전체 복습하기
🐈오늘의 느낀 점
1. 원래 오늘까지 exrpess 라우팅에 대해서 추가로 정리하려고 했는데, 졸음도 오고 운동도 해야해서 못했다. 아마 내일 저녁에 시간이 된다면 정리할 수 있을 것 같고 아니면 주말까지 밀릴 수도 있을 것 같다. 시간관리가 어려운 부분인데 체력이 안따라주는 것도 원인 중 하나인 것 같다.
2. 금요일에서 토요일로 넘어가는 저녁에 루틴이 와장창 깨져버리는데, 내일은 그러지 않도록 주의해야지...!!
'TIL' 카테고리의 다른 글
[Day 42] 2022-0822 : 재귀함수2 (재귀 지옥...) (0) | 2022.08.23 |
---|---|
[Day 41] 2022-0819 : 재귀함수 (0) | 2022.08.19 |
[Day 39] 2022-0817 (0) | 2022.08.18 |
[Day 38] 2022-0816 (0) | 2022.08.17 |
[Day 37] 2022-0812 (0) | 2022.08.13 |