Today I Learned
- Programmers 문제 풀기
- 17시 인텔리픽 모의면접
Programmers 문제 풀기
최빈값 구하기
나의 풀이
function solution(array) {
// array의 최댓값 길이만큼 o으로 구성된 배열을 만듦
const numArr = Array(Math.max(...array) + 1).fill(0);
// array의 정수마다 numArr의 index로 접근하여 값을 하나씩 더함
for ( const num of array ) {
numArr[num] += 1
};
// numArr에서 최댓값의 index를 구해서 최빈값을 구하고
// indexOf와 lastIndexOf로 최빈값이 여러 개인 경우를 예외 처리 함
return numArr.indexOf(Math.max(...numArr)) !== numArr.lastIndexOf(Math.max(...numArr))
? -1
: numArr.indexOf(Math.max(...numArr));
}
이번 풀이의 접근 방식은 배열의 index === 해당 정수라는 점.
인텔리픽 모의면접 질문 리스트
- 자기소개
- 프로젝트 소개, 담당 역할, 기억에 남는 트러블슈팅
- Next.js rewrites 기능 이용해서 api key 숨겼다 -> api key를 왜 숨겨야 할까요?
- next.js 왜 사용?
- next.js 쓰면 왜 렌더링 속도 개선 가능할까?
- 자료구조 아는 거 있냐 (스택은 그래프탐색에 사용)
- 모른다 하면 개념 하나 설명해 주면서(ex 스택) 이거를 어떻게 활용할 수 있겠냐
- 알고리즘 아는 거 있냐
- TCP/UDP/IP 설명해줘라
- 브라우저 렌더링 과정
- 리액트는 왜 사용할까
- virtual dom과 real dom 차이 설명
- 리액트 쿼리는 왜 사용할까요?
- 캐싱 기능 써 본 적 있냐? 없다. 그럼 어디에 쓰면 좋을까요?
- 리덕스 리코일 중 왜 리코일 사용, 장점이 뭐냐
회고
인텔리픽 모의면접 두 번째로 봤는데 저번 면접 때는 확실히 운이 좋아서 다 아는 개념들만 질문이 나왔던 거 같다. 오늘은 자료구조->알고리즘->TCP 순서로 내가 모르는 부분만 연속해서 질문을 받으니까 이때 좀 힘들었다.. 그리고 꼬리질문 형태로 질문을 많이 받았고, 내가 모른다고 대답했을 때 면접관님이 개념을 설명해 주시면서 이걸 희령님이라면 어디에 활용할 거 같은가요? 같은 면접 방식도 처음이었다.
오늘 확실히 느낀 건 자료구조를 공부해야겠다는 점. 이력서에 매일 알고리즘 풀기 때문에 성실한 사람이라고 어필했으면서 자료구조에 대해 하나도 모르는 건 내가 생각해도 모순적인 거 같다. 일단 개념 위주로 단기간에 공부해보려 한다. 그리고 TCP/UDP/IP 등 네트워크 관련 지식도 공부하는 게 좋겠다는 피드백을 받았다.