도리안의 개발 잡설 #249 - 개발자를 위한 면접 자료 찾아보기 (2)
개발자를 위한 면접 자료. 이번에는 자료 구조에 관해서이다. 자료 구조에서 배운 내용들은 요즘에는 직접 구현해서 쓰는 경우는 흔치 않다. 대신 요즘 언어들이 지원하는 자료구조들을 활용할 수 있으며, 이들의 개념을 알고 있다면 어떤 것을 사용하는 것이 더 좋을지 결정할 수 있다. 자료구조를 잘못 선택하면 프로그램이 매우 느리거나 메모리를 쓸데 없이 많이 잡아먹는 문제가 생길 수 있다. 최적화라는 측면에서 자료구조는 알아야 하는 것이 맞다. 그래서 면접에서도 이에 대해 질문을 할 수 있다. 어떤 질문들을 면접관이 할 수 있는지 리스트를 보고 대비하는 것도 나쁘지 않다.
(영상을 보고 일일이 타이핑하느라 시간이 걸렸다. 시간과 공을 들인만큼 열심히 해야지.)
자료구조 일반
- 자료구조 중에 생각나는 것 있으면 몇 가지만 얘기해 보세요.
- 자료구조를 선택하는 기준이 있나요? 속도라던지, 메모리라던지, 데이터베이스에서 데이터를 가져오거나 입력받은 데이터를 저장할 때 어떤 자료구조를 사용하는지 기준이 있는지?
List, Set, Map
- List, Set, Map의 차이는 무엇인가요?
- List, Set, Map은 어떤 인터페이스를 구현하나요?
- foreach를 사용할 수 있는 자료구조는 어떤 인터페이스를 상속받고 있나요?
- foreach를 사용하면 다음 데이터를 얻기 위해서 내부적으로 호출되는 메소드가 있는데 혹시 아시나요?
- Iterator와 iterable의 차이는 무엇인가요?
- Iterator에서 구현해야 하는 메소드는 어떤 것들이 있을까요?
- 배열은 size가 변경될 수 있나요?
- 만약에 size가 10인 배열에 20개를 넣거나 Size를 5로 줄이려면 어떻게 하면 되나요?
- Size가 변경될 경우에는 어떠한 자료구조를 사용하는 것이 좋을까요?
- 동적(가변) 자료구조 중에 아는 것이 있으면 얘기해 주세요.
- Generic 타입과 None Generic 타입의 자료구조의 차이를 설명할 수 있나요?
- Generic 타입의 자료구조는 어떤 것들이 있나요?
- Generic 타입의 자료구조의 장점은 무엇인가요?
- object형을 저장하면 안 되나요?
- ArrayList와 LinkedList의 차이를 설명할 수 있을까요?
- 데이터를 순차적으로 검색할 때 가장 적합한 것은 어느 것인가요?
- 데이터를 빈번하게 추가, 삭제할 때 가장 적합한 것은 어느 것인가요? 왜 그렇게 생각하시죠?
- ArrayList, List에서 중간에 데이터를 삭제하면 내부적으로 어떻게 동작하는지 아시나요?
- ArrayList, List 중에 검색 속도는 어떤 것이 더 빠를까요?
- List에서 검색이 제일 느린 케이스는 어떤 것인가요?
- LinkedList는 이전 Node, 이후 Node의 정보를 어떻게 알아요?
- LinkedList에서 중간에 데이터를 삽입하면 내부적으로는 어떻게 동작할까요?
- List와 Set의 차이는 무엇인가요?
- 중복을 허용하지 않는다면 내부적으로 동일하다는 것을 어떻게 확인할까요?
- 같다라는 기준을 바꿀 수도 있나요?
- Map은 다른 자료구조와 무엇이 다른가요?
- Map을 사용해야 하는 경우의 예를 설명해 주세요.
- 알고 있는 Map은 어떤 것들이 있나요?
Hash
- HashTable과 HashMap은 무엇이 다른가요?
- Hashing이란 무엇인가요?
- Hash 값은 중복될 수 있는데, Hash의 충돌을 피할 수 있는 방법은 무엇인가요?
- Hashing을 하면 무엇이 좋은가요?
- 왜 Hashing을 해야 하나요?
Queue, Stack
- Queue와 Stack의 차이를 설명해 주세요.
- Queue와 Stack을 사용하는 예를 하나씩 설명해 주세요.
- Queue와 Stack은 내부적으로 어떤 자료구조를 사용하는지 알고 있나요?
- Queue와 Stack을 직접 구현한다면, 어떤 자료구조를 사용하는 것이 좋을까요? 이유는 무엇일까요?
- 만약에 인스턴스 메시지를 등록된 순서대로 발송한다고 하면, 어떤 자료구조를 이용할까요?
- (위 질문에 이어) 배열이나 List를 사용하면 안 되나요? 어떤 차이가 있나요?
- Queue 선입선출로 메시지 발송이 되고 있는데, 긴급발송건이나 예약건이 있으면 먼저 보내줘야 하는데 그럼 Queue에서 가능 할까요?
Tree
- Tree는 어떤 경우에 사용을 하나요?
- B-Tree에 대해 설명할 수 있나요? 노드가 어떻게 되어 있어요?
- 이진 트리는 내부적으로 데이터가 어떻게 저장되나요?
- Binary Search Tree(이진 검색 트리)에 대해 설명할 수 있나요?
- 이진 검색 트리는 내부적으로 데이터가 어떻게 저장되나요?
- 이진 검색 트리에서 검색 속도가 가장 느린 케이스는 데이터가 어떻게 저장되어 있는 경우인가요?
동기화
- 동기화를 지원하는 자료구조는 어떤 것들이 있나요?
- 동기화를 지원하는 자료구조는 언제, 왜 필요할까요?
- 멀티쓰레드 환경에서 동기화를 지원하지 않으면 어떤 문제가 발생할까요?
지난 개발 잡설들
- #248 - 개발자를 위한 면접 자료 찾아보기
- #247 - IT 회사에서 일하면서 경험했던 나쁜 사람들
- #246 - 한 안드로이드 개발자의 퇴직
- #245 - QA파트 마지막 인원의 퇴사로 업무 인수인계 대리 예정
- #244 - 구미가 당기는 M1 맥북 프로 그리고 몰랐던 개발환경 세팅
- #243 - IT북스토어 과제: 보완할 점들
- #242- 정년퇴직한 개발자 관련 뉴스를 보며...
- #241 - IT북스토어 과제: 리팩토링
- #240 - 중고서점에서 구입한 책
- #239 - 얼랑뚱땅 지나가 버린 설연휴 전날
- #238 - 퇴사예정자의 코드를 리뷰하면서 느낀 점
- #237 - 늦은 밤 작업은 지양해야
- #236 - 안드로이드 스튜디오 업그레이드 그러나 이후 오래 걸리는 그래들 싱크
- #235 - 업무 일기도 마인드 맵으로!
- #234 - 개발 오래 하려면 건강 관리부터
- #233 - 새로운 책받침대 구입
- #232 - iOS에 이어 안드로이드 개발자도 퇴직 의사를 밝히다
- #231 - 재택근무 환경에 변화를 주다.
- #230 - 점심 시간에 불이 꺼져 있는 타사 사무실
- #229 - 마인드 맵 그리기 시작!
- #228 - 간만에 종일 코딩해서 즐거운 하루
- #227 - 마인드 맵으로 개발업무일지 쓸 수 있을까?
- #226 - 또 다른 iOS 개발자의 퇴직
- #225 - 스팀잇과 네이버 블로그의 관리는 어떻게...
- #224 - 쉽지 않은 재택근무
- #223 - 야근을 하게 되는 이유들...
- #222 - 신변잡기의 내용이 이어지는 개발 잡설
- #221 - 내일 하루 쉬기로...
- #220 - 프리랜서 관련 유튜브 영상을 보고...
- #219 - IT Bookstore에서 제공하는 API
- #218 - 간만에 재택근무. 이번에는 서서 일해 보았다.
- #217 - 일찍 퇴근하려 했지만... 쉽지 않은 시간 관리
- #216 - 집중력 저하
- #215 - 갑작스레 떠나게 된 동료 개발자
- #214 - 공부가 뜻대로 되지 않은 날
- #213 - 개발자로 계속 성장하기 위해서는 어떻게 해야 하는가?
- #212 - 다른 회사의 연말 휴일이 부러웠다
- #211 - 오늘만큼은 개발을 내려놓자
- #210 - 수강을 고려 중인 안드로이드 강좌
- #209 - 오전에는 공부 좀 하자
- #208 - 메인 앱의 리팩토링 진행 방향
- #207 - 숙제를 복기해보니 헛점들이...
- #206 - 작지 않은 숙제 하나 해결
- #205 - 모바일 개발자로서 살아남으려면 알아야 할 고급 앱...
- #204 - Kotlin 언어가 제공하는 유용한 함수들 also, apply, let, run, with
- #203 - 쓸데없이 복잡해진 책상 환경
- #202 - 개인사무실을 빌려서 해본 재택근무
- #201 - 계속해서 변화하는 IT 시장에 나는 잘 적응하고 있는지
- #151 ~ #200
- #101 ~ #150
- #51 ~ #100
- #1 ~ #50
Sort: Trending
[-]
successgr.with (74) 3 years ago