CS 기초·알고리즘 면접 질문
자료구조·알고리즘·OS·네트워크 (iOS 맥락으로). 실제 iOS 면접에서 나온 48문항입니다.
- CS 기초·알고리즘주관식Apple커뮤니티 전언
스택과 큐
스택과 큐의 차이를 설명해 주세요.
#stack #queue #data-structure #navigation
- CS 기초·알고리즘객관식Snap커뮤니티 전언
배열 vs 연결 리스트
채팅 화면의 메시지 목록을 담을 자료구조를 고릅니다. 연결 리스트보다 Swift Array가 유리한 이유로 가장 정확한 것은?
#array #linked-list #complexity
- CS 기초·알고리즘객관식
Swift 컬렉션 복잡도
다음 Swift 컬렉션 연산 중 평균 시간 복잡도가 O(1)인 것을 모두 고르세요.
#complexity #array #set #dictionary
- CS 기초·알고리즘주관식카카오
TCP vs UDP
TCP와 UDP의 차이를 설명해 주세요. 패킷이 유실되면 각각 어떻게 되나요?
#tcp #udp #network #urlsession
- CS 기초·알고리즘객관식
이미지 포맷
이미지 포맷에 대한 설명으로 옳은 것을 모두 고르세요.
#png #jpeg #heic #webp
- CS 기초·알고리즘객관식Zomato
구간 겹침 판정
텍스트 하이라이트 범위 두 개가 겹치는지 판단하는 함수를 만듭니다. 두 반열린 구간 a = [a.lower, a.upper), b = [b.lower, b.upper)가 겹친다는 조건으로 올바른 것은 무엇인가요?
#range #interval #overlap #nsrange
- CS 기초·알고리즘주관식Zoom
두 연결 리스트의 첫 교차 노드
두 단방향 연결 리스트가 뒤쪽 노드를 공유할 수 있습니다. 값이 같은 노드가 아니라 실제로 처음 공유하는 노드를 O(n) 시간, O(1) 추가 공간으로 찾는 방법을 설명해 주세요.
#linked-list #two-pointers #identity #algorithm
- CS 기초·알고리즘주관식Zalando커뮤니티 전언
괄호 균형 검사
Swift 문자열에 ()[]{}가 섞여 있을 때 올바르게 중첩됐는지 스택으로 검사합니다. 닫는 괄호를 만났을 때 어떤 비교를 해야 합니까?
#stack #brackets #string #algorithm
- CS 기초·알고리즘주관식
Array 삽입 복잡도
실시간 피드에서 새 게시물이 도착할 때마다 posts.insert(newPost, at: 0)을 호출합니다. 게시물이 5만 개 쌓이면 어떤 문제가 생기나요?
#array #complexity #prepend #deque
- CS 기초·알고리즘주관식Meta커뮤니티 전언
해시맵과 Dictionary
해시맵을 직접 구현한다면 어떻게 만들겠습니까? Swift Dictionary가 내부적으로 어떻게 동작하는지도 함께 설명해 주세요.
#hashmap #dictionary #hashable #collision
- CS 기초·알고리즘객관식
Hashable 일관성
다음 타입을 Set에 넣었을 때 발생하는 문제로 옳은 것은? [코드]
#hashable #equatable #set #bug
- CS 기초·알고리즘객관식
비트 연산과 OptionSet
다음 코드와 OptionSet·비트 연산에 대한 설명으로 옳은 것을 모두 고르세요. [코드]
#bitwise #optionset #bitmask #enum
- CS 기초·알고리즘주관식
탐색 알고리즘 선택
연락처 1만 명 목록에서 이름으로 검색하는 기능을 만듭니다. 순차 검색과 '정렬 후 이진 탐색'은 성능이 어떻게 다르고, 실제 앱에서는 어떤 구조를 쓰겠습니까?
#binary-search #linear-search #dictionary #trie
- CS 기초·알고리즘주관식
프로세스와 스레드
프로세스와 스레드의 차이를 설명해 주세요. 스레드끼리는 무엇을 공유하고 무엇은 따로 갖나요?
#process #thread #os #extension
- CS 기초·알고리즘객관식
스레드 폭발
GCD 로 URL 200개를 내려받는 다음 코드를 실행하면 시스템 스레드 수가 60개 이상으로 치솟고 앱이 멈춥니다. 원인으로 가장 정확한 것은? [코드]
#thread-explosion #gcd #concurrent-queue #semaphore
- CS 기초·알고리즘주관식Snap커뮤니티 전언
정렬 알고리즘과 Swift sort
병합 정렬과 퀵 정렬의 동작과 시간·공간 복잡도를 비교해 주세요.
#sort #stable-sort #merge-sort #quick-sort
- CS 기초·알고리즘객관식
안정 정렬
이름순으로 이미 정렬된 연락처 배열을 contacts.sort { $0.isFavorite && !$1.isFavorite }로 다시 정렬했더니 즐겨찾기 그룹 안의 이름 순서가 유지됩니다. 이것이 보장되는 이유는?
#sort #stable-sort #ui
- CS 기초·알고리즘객관식
순수 함수
다음 중 순수 함수(같은 입력에 항상 같은 출력, 부수 효과 없음)인 것을 모두 고르세요.
#pure-function #functional #side-effect #swiftui
- CS 기초·알고리즘주관식Apple
O(1) 최댓값 스택
편집기의 실행 취소 스택처럼 push/pop 되는 값 중 "현재 최댓값"을 O(1)에 돌려주는 스택을 만들려고 합니다. 먼저 Swift 프로토콜로 인터페이스를 정의하고, 구현 아이디어를 설명해 주세요. [코드]
#stack #max-stack #protocol #xctest
- CS 기초·알고리즘주관식Meta
스트림 이동 평균
화면의 프레임 시간이 매 프레임 들어오는 스트림에서, 언제 물어봐도 "최근 k개 프레임의 평균 시간"을 즉시 돌려주는 타입을 설계해 주세요. 매초 60번 호출되므로 계산이 가벼워야 합니다. 자료구조와 갱신 방식, 복잡도를 설명하세요.
#ring-buffer #sliding-window #moving-average #fps
- CS 기초·알고리즘주관식Reddit
앵커 기준 양방향 조회
채팅 메시지가 id 오름차순으로 정렬된 배열에 있습니다. 푸시 알림을 눌러 특정 메시지로 진입할 때, 그 id를 기준으로 앞 5개·뒤 5개까지 총 최대 11개를 오름차순으로 돌려주는 함수를 작성한다면 어떻게 하겠습니까?
#binary-search #sorted-array #pagination #anchor
- CS 기초·알고리즘객관식PayPal
슬라이딩 윈도우의 전제
거래 금액 배열에서 "합이 한도 L 이하인 가장 긴 연속 구간"을 두 포인터 슬라이딩 윈도우로 O(n)에 풀었습니다. 면접관이 "환불이 섞여서 음수 금액이 들어오면요?"라고 묻습니다. 무엇이 문제인가요?
#sliding-window #two-pointers #prefix-sum #monotonic
- CS 기초·알고리즘주관식Audible
인접 중복 없는 재배열
피드에 보여줄 게시물 목록이 있는데, 같은 작성자의 글이 연속으로 나오지 않게 순서를 바꿔야 합니다. 어떤 알고리즘으로 재배열하나요? 시간 복잡도도 말해 주세요.
#greedy #heap #priority-queue #feed
- CS 기초·알고리즘주관식Mastercard
손상된 로그 파싱
앱이 남긴 네트워크 로그 파일이 있습니다. 각 줄은 사용자ID(4자리) 페이지명 시작시각(hh:mm:ss) 종료시각(hh:mm:ss) 형식인데, 일부 줄은 깨져 있습니다. 유효한 줄만 골라 로딩이 가장 느렸던 페이지 2개를 찾는 함수를 어떻게 설계하겠습니까? 검증, 시간 계산, 상위 …
#parsing #validation #log #top-k
- CS 기초·알고리즘객관식JPMorgan Chase
시간 창 이상 탐지
거래 목록(카드번호, 국가, 시각)이 시각 오름차순으로 들어옵니다. "같은 카드가 5분 안에 서로 다른 두 나라에서 사용됨"을 탐지하는 가장 효율적인 접근은 무엇인가요?
#hashmap #time-window #stream #fraud
- CS 기초·알고리즘객관식Capital One커뮤니티 전언
Luhn 체크섬
카드번호 입력 화면에서 서버 요청 전에 Luhn 알고리즘으로 번호를 검증하려고 합니다. Luhn 검증에 대해 맞는 설명을 모두 고르세요.
#luhn #checksum #validation #card-number
- CS 기초·알고리즘주관식Pinterest커뮤니티 전언
무한 스크롤의 cursor 설계
핀 보드처럼 끝없이 내려가는 iOS 목록에서 같은 항목이 두 번 보이거나 다음 페이지가 빠지는 일을 막으려 합니다. offset 대신 cursor를 쓴다면 어떤 상태와 함께 저장하겠습니까?
#pagination #cursor #infinite-scroll #deduplication
- CS 기초·알고리즘주관식Square
재고 관리 객체 설계
재고 입고, 예약, 판매, 취소 연산을 차례로 처리하는 Swift 재고 관리 시스템을 설계합니다. 재고 수량의 불변식은 어떤 도메인 타입으로 지키겠습니까?
#object-oriented-design #inventory #invariant #domain-model
- CS 기초·알고리즘주관식Bilibili
36진수 문자열 덧셈
숫자와 알파벳으로 표현한 두 36진수 문자열을 정수로 바꾸지 않고(오버플로 없이) 더해 문자열로 돌려줘야 합니다. 각 자릿수 변환, carry 처리, 앞쪽 0 제거를 어떻게 구현하겠습니까?
#string #base36 #carry #arithmetic
- CS 기초·알고리즘주관식Deloitte커뮤니티 전언
O(1) LRU 캐시
최근 사용한 항목만 남기는 LRU 캐시를 설계합니다. get과 put을 평균 O(1)로 만들기 위해 HashMap과 이중 연결 리스트가 각각 무엇을 맡습니까?
#lru-cache #hash-map #linked-list #data-structure
- CS 기초·알고리즘주관식오늘의집
그래프 최단 경로의 방문 처리
집 꾸미기 추천에서 방과 방의 연결 그래프를 따라 최소 이동 횟수를 구합니다. 모든 간선 비용이 같을 때 BFS가 최단 경로를 보장하는 이유를 설명해 주세요.
#graph #bfs #visited-set #shortest-path
- CS 기초·알고리즘주관식N26커뮤니티 전언
HashMap과 Set의 복잡도 선택
한 시간짜리 코딩 테스트에서 고객 ID 목록의 중복을 찾고 각 ID의 등장 횟수도 세야 합니다. Swift Set과 Dictionary를 각각 언제 쓰겠습니까?
#hashmap #set #complexity #swift
- CS 기초·알고리즘주관식
LRU 캐시
메모리 이미지 캐시를 LRU로 직접 구현해야 합니다. 어떤 자료구조로 get/put을 O(1)로 만들 수 있나요?
#lru #cache #linked-list #dictionary
- CS 기초·알고리즘객관식
부동소수점 오차와 Decimal
결제 금액 계산에서 0.1 + 0.2 == 0.3이 false로 나와 테스트가 실패했습니다. 부동소수점과 Decimal에 대한 설명으로 옳은 것을 모두 고르세요.
#floating-point #decimal #ieee754 #currency
- CS 기초·알고리즘주관식
QUIC와 모바일 네트워크
지하철에서 Wi-Fi와 LTE가 계속 바뀌는 사용자의 앱 요청이 자주 끊깁니다. TCP 기반 HTTP/2와 QUIC 기반 HTTP/3는 이 상황을 각각 어떻게 다루나요?
#quic #http3 #tcp #connection-migration
- CS 기초·알고리즘주관식
첫 요청 지연 분석
앱을 콜드 스타트하면 첫 API 응답이 800ms인데 두 번째부터는 120ms입니다. 그 사이에 네트워크 계층에서 무슨 일이 일어나는지 단계별로 설명해 주세요.
#dns #tls #handshake #latency
- CS 기초·알고리즘주관식Meta커뮤니티 전언
트리 탐색과 뷰 계층
원본 뷰 계층의 특정 UIView 인스턴스가 주어지고, 같은 구조로 복제된 뷰 계층이 있습니다. 복제본에서 대응되는 뷰를 찾는 함수를 어떻게 설계하겠습니까?
#bfs #dfs #tree #view-hierarchy
- CS 기초·알고리즘주관식TikTok
재귀와 스택 한계
깊이가 수천 단계인 중첩 JSON을 재귀로 순회하다가 백그라운드 스레드에서만 크래시가 납니다. 원인은 무엇인가요?
#recursion #iteration #stack-overflow #thread-stack
- CS 기초·알고리즘객관식
캐시 지역성
10만 개의 좌표를 순회하며 거리를 합산합니다. 다음 두 코드 중 A가 B보다 눈에 띄게 빠른 주된 이유는? [코드]
#cache-locality #struct #class #memory-layout
- CS 기초·알고리즘주관식Google
가장 가까운 K개 장소
수만 개 장소의 id와 좌표(위도·경도)가 있습니다. 사용자의 현재 위치가 주어지면 가장 가까운 10개 장소를 찾아 그 중심 좌표를 돌려주는 함수를 설계해 주세요. 어떤 알고리즘과 자료구조를 쓰고 복잡도는 얼마인가요?
#k-nearest #heap #quickselect #geo
- CS 기초·알고리즘주관식PayPal
TTL이 있는 LRU 캐시
LRU 캐시를 구현한 뒤 면접관이 이어서 묻습니다. "이제 각 항목이 저장된 지 일정 시간이 지나면 만료되게 해 주세요. 그러면 무엇이 비싸지나요?" 만료를 가장 싸게 검사하는 방식과 그 방식이 치르는 대가를 설명해 주세요.
#lru #ttl #cache #expiry
- CS 기초·알고리즘주관식Microsoft
연결 영역 크기와 재귀 한계
이미지 마스크가 N×M 격자로 주어지고 1은 전경, 0은 배경입니다. 상하좌우로 이어진 1 덩어리(연결 영역)마다 크기를 구해 배열로 돌려주는 함수를 작성한다면 어떻게 하겠습니까? iPhone에서 4000×3000 마스크를 처리한다고 가정하세요.
#flood-fill #bfs #dfs #matrix
- CS 기초·알고리즘주관식Shopee
가상 메모리의 역할
"기기에 물리 메모리가 충분히 크면 가상 메모리는 필요 없지 않느냐"는 질문을 받았습니다. 어떻게 답하겠습니까?
#virtual-memory #paging #mmap #jetsam
- CS 기초·알고리즘주관식Alibaba Group
메모리보다 큰 데이터의 중복 제거
한 줄에 URL 하나씩 담긴 1TB 로그 파일에서 중복 URL을 제거해야 하는데 쓸 수 있는 메모리는 1GB뿐입니다. 어떻게 하겠습니까?
#external-memory #hash-partition #bloom-filter #dedupe
- CS 기초·알고리즘주관식
Diff 알고리즘
UICollectionViewDiffableDataSource에 새 스냅샷을 적용하면 어떤 원리로 삽입·삭제·이동을 계산하나요? 왜 아이템 식별자가 Hashable이어야 하는지도 함께요.
#diffable-data-source #diff #myers #heckel
- CS 기초·알고리즘주관식
의존성 그래프와 위상 정렬
30개 모듈로 나뉜 앱에서 DI 컨테이너가 서비스들을 초기화하는데, 초기화 순서를 손으로 관리하다 "A 는 B 를 필요로 하고 B 는 A 를 필요로 한다"는 크래시가 났습니다. 의존성 그래프에서 안전한 초기화 순서를 구하는 알고리즘을 설명해 주세요.
#graph #topological-sort #dependency #cycle-detection
- CS 기초·알고리즘주관식
Trie 기반 자동완성
오프라인에서도 동작하는 검색어 자동완성을 만들어야 합니다. 후보 단어 50만 개, 입력마다 상위 10개를 16ms 안에 돌려줘야 합니다. 자료구조를 어떻게 설계하나요?
#trie #autocomplete #memory #search
- CS 기초·알고리즘주관식
프리픽스 합과 이진 탐색
셀 높이가 제각각인 커스텀 세로 레이아웃(UICollectionViewLayout 서브클래스)을 만듭니다. layoutAttributesForElements(in rect:)가 스크롤마다 호출되는데, 셀 2만 개를 매번 순회하면 버벅입니다. 어떤 자료구조와 알고리즘으로 O(log n)…
#prefix-sum #binary-search #layout #scroll