Swift 언어 면접 질문
옵셔널·제네릭·프로토콜·값/참조 타입·클로저·Codable. 실제 iOS 면접에서 나온 53문항입니다.
- Swift 언어객관식
옵셔널
다음 중 옵셔널을 안전하게 언래핑하는 방법을 모두 고르세요.
#optional #unwrap
- Swift 언어객관식
값 의미론
다음 코드의 출력은? [코드]
#struct #class #value-semantics #let
- Swift 언어객관식
타입 캐스팅
let view: UIView = UILabel() 일 때, 다음 중 런타임 크래시가 날 수 있는 캐스팅은?
#type-casting #as #downcast #optional
- Swift 언어주관식
옵셔널의 정체
옵셔널이 Swift에 있는 이유는 무엇인가요?
#optional #enum #nil #safety
- Swift 언어객관식
컬렉션 타입
수만 개의 사용자 ID 중에서 특정 ID가 포함되어 있는지 반복해서 검사해야 합니다. 가장 적합한 컬렉션은?
#array #set #dictionary #hashable
- Swift 언어객관식Meesho
옵셔널과 IUO
다음 세 줄 중 컴파일되는 것을 모두 고르세요. [코드]
#optional #iuo #implicitly-unwrapped #nil
- Swift 언어주관식Capital One
고차 함수 조합
["a", "b", "c"]를 입력받아 ["c-0", "b-1", "a-2"]를 만들어 보세요. for 루프 대신 고차 함수만 사용해야 합니다. 어떤 함수들을 어떤 순서로 조합하겠습니까?
#higher-order #map #enumerated #reversed
- Swift 언어주관식Adobe
튜플의 용도와 한계
Swift에서 튜플은 언제 쓰는 것이 적절한가요?
#tuple #struct #multiple-return #destructuring
- Swift 언어객관식Oura
struct를 선택해야 하는 상황
다음 중 Swift에서 class가 아니라 struct로 만드는 것이 적절한 경우를 모두 고르세요.
#struct #class #value-type #reference-type
- Swift 언어객관식Infosys커뮤니티 전언
guard 문 규칙
Swift의 guard 문에 대한 설명으로 맞는 것을 모두 고르세요.
#guard #early-exit #optional-binding #control-flow
- Swift 언어주관식브랜디커뮤니티 전언
강제 언래핑 금지 규칙과 예외
팀 코드 리뷰 규칙에 "강제 언래핑(!) 금지"가 있습니다. 왜 이런 규칙을 두나요?
#optional #force-unwrap #iuo #code-review
- Swift 언어주관식Apple커뮤니티 전언
값 타입과 참조 타입
Swift에서 struct와 class는 근본적으로 무엇이 다른가요?
#struct #class #value-type #cow
- Swift 언어주관식
escaping 클로저
아래 코드는 컴파일되지 않습니다. 컴파일러가 무엇을 요구하나요? [코드]
#closure #escaping #non-escaping #capture
- Swift 언어객관식
접근 제어
프레임워크 모듈에서 open class로 선언한 것과 public class로 선언한 것의 차이로 맞는 것을 모두 고르세요.
#access-control #open #public #module
- Swift 언어주관식
프로토콜 지향 프로그래밍
팀원이 BaseViewModel 클래스를 만들고 모든 화면이 이를 상속하도록 하자고 합니다. 프로토콜 지향 방식으로 대안을 제안한다면 어떻게 설계하겠습니까?
#protocol #pop #oop #protocol-extension
- Swift 언어주관식
mutating과 값 타입
아래 코드에서 컴파일 에러는 어느 줄에서 왜 나나요? [코드]
#mutating #struct #value-semantics #inout
- Swift 언어객관식
defer
다음 함수를 호출하면 출력 순서는? [코드]
#defer #scope #cleanup
- Swift 언어주관식
Any / AnyObject / NSObject
Any, AnyObject, NSObject는 각각 무엇을 담을 수 있나요?
#any #anyobject #nsobject #existential
- Swift 언어객관식
enum
Swift enum에 대한 설명으로 맞는 것을 모두 고르세요.
#enum #associated-value #raw-value #pattern-matching
- Swift 언어객관식
고차 함수
다음 코드의 출력은? [코드]
#map #compactmap #flatmap #higher-order-function
- Swift 언어객관식
lazy 프로퍼티
lazy var 저장 프로퍼티에 대한 설명으로 맞는 것을 모두 고르세요.
#lazy #stored-property #initialization #thread-safety
- Swift 언어주관식
KeyPath
Swift에서 \.name 같은 KeyPath는 정확히 무엇을 나타내는 값인가요?
#keypath #writablekeypath #referencewritablekeypath #kvo
- Swift 언어주관식라인
직렬화 모델의 타입 선택
서버 응답 JSON을 직렬화·역직렬화(Serialization)하는 모델 타입을 만들 때 class를 써야 하나요, struct를 써야 하나요? 근거를 들어 답해 주세요.
#struct #class #codable #serialization
- Swift 언어객관식Meesho
재귀적 값 타입
다음 코드를 컴파일하면 어떻게 되나요? 같은 정의를 class Person으로 바꾸면요? [코드]
#struct #class #recursive #memory-layout
- Swift 언어객관식Zomato
Swift 타입 규칙 상식
Swift 언어 규칙에 대한 다음 설명 중 맞는 것을 모두 고르세요.
#initializer #deinit #access-control #closure
- Swift 언어주관식Gojek
private vs fileprivate
같은 파일에 class A { fileprivate func secret() {} }와 class B가 있습니다. B 안에서 A().secret()을 호출할 수 있는지, private으로 바꾸면 어떻게 달라지나요?
#access-control #private #fileprivate #extension
- Swift 언어주관식Walmart
compactMap 직접 구현
Array를 확장해 표준 라이브러리의 compactMap과 같은 동작을 하는 myCompactMap을 직접 구현해 보세요. 제네릭 시그니처는 어떻게 잡겠습니까?
#generics #rethrows #extension #compactmap
- Swift 언어주관식Swiggy
Optional 확장
어떤 옵셔널이든 someOptional.isNil처럼 nil 여부를 물을 수 있게 Optional을 확장해 보세요. 어떻게 구현하겠습니까?
#optional #extension #enum #pattern-matching
- Swift 언어객관식DiDi
초기화·해제·옵저버 규칙
Swift의 클래스 초기화·해제·프로퍼티 옵저버에 대한 설명 중 맞는 것을 모두 고르세요.
#deinit #required #property-observer #set
- Swift 언어주관식IBM커뮤니티 전언
제네릭 vs Any와 특수화
코드 리뷰 중 func larger(_ a: Int, _ b: Int) -> Int, larger(_ a: Double, _ b: Double) -> Double, larger(_ a: String, ...)처럼 타입별로 같은 로직을 오버로딩해 둔 함수를 발견했습니다. 제네릭 하나로 …
#generics #any #specialization #type-safety
- Swift 언어객관식Tinder커뮤니티 전언
inout 파라미터
Swift의 inout 파라미터(func bump(_ x: inout Int))에 대한 설명으로 맞는 것을 모두 고르세요.
#inout #copy-in-copy-out #exclusivity #value-type
- Swift 언어주관식SAP
원본 보호와 깊은 복사
함수에 class 인스턴스를 넘겨 함수 안에서 프로퍼티를 바꿨더니 호출한 쪽의 원본까지 바뀌었습니다. 원본을 보호하려면 어떻게 하나요?
#reference-type #deep-copy #shallow-copy #nscopying
- Swift 언어주관식JD.com
Swift enum이 다른 언어와 다른 점
Java나 C를 주로 쓰던 동료가 Swift enum도 결국 상수 목록 아니냐고 묻습니다. Swift enum이 다른 언어의 enum과 근본적으로 다른 점은 무엇인가요?
#enum #associated-values #sum-type #exhaustive-switch
- Swift 언어주관식Capgemini커뮤니티 전언
옵셔널 체이닝의 동작
아래처럼 옵셔널 체이닝을 여러 단계 이어 붙였을 때 체이닝 도중 nil을 만나면 무슨 일이 일어나나요? [코드]
#optional-chaining #optional #short-circuit #flatten
- Swift 언어주관식Cognizant커뮤니티 전언
타입 추론과 컴파일 시간·let vs var
Swift는 타입 추론이 있어 타입을 거의 안 써도 되는데, 팀 컨벤션에 "복잡한 표현식과 public API에는 타입을 명시하라"는 규칙이 있습니다. 타입 추론이 어떻게 동작하기에 이런 규칙이 생겼나요?
#type-inference #compile-time #let #var
- Swift 언어주관식
불투명 타입과 존재 타입
func make() -> some Shape와 func make() -> any Shape는 호출자 입장에서 무엇이 다른가요?
#some #any #existential #opaque
- Swift 언어주관식Uber
제네릭과 타입 소거
getNext()와 hasNext()를 가진 Iterator 프로토콜을 Int 전용에서 제네릭(associatedtype Element)으로 바꾸려 합니다. 바꾼 뒤 [Iterator] 배열을 만들려고 하니 컴파일이 막힙니다. 왜 그런가요?
#generic #associatedtype #type-erasure #any
- Swift 언어주관식
에러 처리
네트워크 레이어를 설계할 때 throws 함수, Result<T, E> 반환, Swift 6의 typed throws(throws(NetworkError)) 중 무엇을 기준으로 삼겠습니까?
#error #throws #result #typed-throws
- Swift 언어주관식
Codable
서버 JSON이 snake_case 키를 쓰고, 날짜는 "2026-09-11T10:00:00Z" 문자열입니다. Codable로 이 응답을 디코딩하려면 디코더에 어떤 장치를 두겠습니까?
#codable #decodable #codingkeys #json
- Swift 언어주관식
String 내부 구조
text[3]처럼 정수로 String에 접근할 수 없고 text.count가 O(n)인 이유는 무엇인가요?
#string #unicode #grapheme #index
- Swift 언어주관식TikTok
메서드 디스패치
Swift에서 정적·테이블·메시지 디스패치는 각각 어떤 메서드 호출에 적용되나요?
#dispatch #static-dispatch #dynamic-dispatch #vtable
- Swift 언어객관식
Property Wrapper
다음 코드의 출력은? [코드]
#property-wrapper #projectedvalue #wrappedvalue
- Swift 언어주관식
초기화 규칙
아래 코드가 컴파일되지 않는 이유는 무엇인가요? 2단계 초기화 규칙으로 설명해 주세요. [코드]
#initializer #designated #convenience #two-phase
- Swift 언어주관식네이버웹툰
ContiguousArray vs Array
자기소개서에 "ContiguousArray가 Array보다 빠르다"고 썼다고 합시다. 프리인터뷰에서 면접관이 "그런데 왜 실무에서는 개발자들이 ContiguousArray를 잘 쓰지 않을까요"라고 묻습니다. 어떻게 답하겠습니까?
#array #contiguousarray #performance #bridging
- Swift 언어주관식Airbnb
이터레이터의 이터레이터
[[1, 2], [], [3], [4, 5, 6]]처럼 '컬렉션의 컬렉션'을 받아 평평한 순서(1, 2, 3, 4, 5, 6)로 하나씩 꺼내 주는 이터레이터를 어떻게 설계하겠습니까? for-in에서 그대로 쓸 수 있어야 합니다.
#iteratorprotocol #sequence #flatten #generics
- Swift 언어주관식Xiaohongshu
extension과 저장 프로퍼티
extension으로 기존 타입에 프로퍼티를 추가하려고 합니다. 연산 프로퍼티는 되는데 저장 프로퍼티는 왜 안 되나요?
#extension #stored-property #memory-layout #associated-object
- Swift 언어주관식Verizon커뮤니티 전언
큰 컬렉션을 가진 값 타입
수십만 개 항목을 가진 매우 큰 Dictionary를 struct의 프로퍼티로 넣고, 그 struct를 여기저기 값으로 전달해야 합니다. '가장 빠르게' 넣고 전달하려면 어떻게 해야 하나요?
#cow #dictionary #value-type #performance
- Swift 언어주관식Grab커뮤니티 전언
커스텀 Optional 설계
물음표 옵셔널 문법도 표준 Optional도 없다고 가정해 봅시다. '값이 있거나 없거나'를 표현하는 타입을 Swift로 직접 설계한다면 어떻게 정의하겠습니까?
#optional #enum #generics #map
- Swift 언어주관식야놀자커뮤니티 전언
C++ 라이브러리 연동
영상 처리 C++ 라이브러리를 Swift 앱에서 써야 합니다. 예전 방식(Objective-C++ 래퍼)과 Swift 5.9의 C++ 상호운용(interop) 중 무엇을 고르겠습니까?
#cpp-interop #objective-c++ #bridging #ownership
- Swift 언어객관식
프로토콜 익스텐션 디스패치
다음 코드의 출력은? [코드]
#protocol #extension #dispatch #witness-table
- Swift 언어주관식
Copy-on-Write 구현
대용량 픽셀 버퍼를 감싸는 struct ImageBuffer를 만들어야 합니다. 값 의미론은 유지하면서 불필요한 복사를 피하고 싶습니다. Copy-on-Write를 직접 구현한다면 코드 골격과 핵심 API는 어떻게 되나요?
#cow #copy-on-write #isknownuniquelyreferenced #value-semantics
- Swift 언어주관식
Objective-C 상호운용
Swift 모듈이 레거시 Objective-C 코드와 서로 호출해야 합니다. 양방향 브리징은 어떻게 설정하나요?
#objc #bridging #interop #dynamic
- Swift 언어주관식
ABI 안정성과 라이브러리 진화
사내 공통 모듈을 XCFramework 바이너리로 배포하려 합니다. Swift ABI 안정성과 Library Evolution(BUILD_LIBRARY_FOR_DISTRIBUTION)은 각각 무엇을 보장하나요?
#abi #library-evolution #frozen #inlinable