ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [면접 공부] Swift (1)
    면접 공부 2023. 5. 4. 15:32

    이 링크를 통해서 공부하고 있습니다.

    https://github.com/JeaSungLEE/iOSInterviewquestions

     

    GitHub - JeaSungLEE/iOSInterviewquestions: 👨🏻‍💻👩🏻‍💻iOS 면접에 나올 질문들 총 정리

    👨🏻‍💻👩🏻‍💻iOS 면접에 나올 질문들 총 정리 . Contribute to JeaSungLEE/iOSInterviewquestions development by creating an account on GitHub.

    github.com

     

    1. struct와 class와 enum의 차이를 설명하시오

    - struct와 class, enum의 가장 큰 차이점은 값타입인지 참조 타입인지 이다. struct, enum은 값 타입 class는 참조타입이다.

    - class는 상속이 가능하지만 struct, enum은 불가능하다.

    - class,struct는 초기화 함수를 갖지만 enum은 갖지 않는다.

     

    2. class의 성능을 향상 시킬 수 있는 방법들을 나열해보시오

    - final이나 private 키워드를 작성하여 성능을 향상시킬 수 있습니다.
    컴파일 시점이란 앱을 동작시키기 전에 개발자가 작성한 코드들이 컴퓨터가 읽을 수 있게 만들어서 앱 실행을 준비하는 과정입니다.

    앱을 준비하는 과정을 컴파일 이라고 하는데 이때는 앱이 실행중이 아닌 앱이 실행되기 전에 어떤 함수를 호출할지 정하기 때문에 성능이 좋아진다. 반대로 앱이 실행중에 어떤함수를 실행시킬지 정하는 지점을 런타임이라고 하는데 이때 어떤함수를 실행시킬지 정하게 되면 성능이 떨어지게 된다. final이나 private를 작성하면 런타임이 아닌 컴파일중에 함수 호출을 결정짓게 되기 때문에 성능이 좋아진다고 한다.'

     

    3. Copy On Write는 어떤 방식으로 동작하는지 설명하시오. 

    - Copy On Write는 만약 arr1 배열을 초기화하고 arr2 배열에 넣어주면 배열은 값타입이기 때문에 복사해서 arr1, arr2 각각 다른 메모리를 갖고 있어야 한다. 하지만 Copy On Write로 인해서 일단은 값을 복사해서 저장하지 않고 class처럼 arr1 메모리를 arr2가 바라보게 된다. 이렇게 되면 불필요한 메모리사용을 줄일 수 있다. 만약  arr2를 바꾸게 되면 arr1도 바뀌는 것이 아닌 그때서야 복사를 해서 값을 저장하고 arr2값을 바꾸게 된다.

     

    4. Convenience init에 대해 설명하시오.

    - init을 도와주는 역할이다. convenience init은 init을 호출해줘야 한다는 조건이 있다. 만약 class a,b,c객체가 있다고 하면 init에서는 a b c를 초기화 해줘야 한다. 만약 a의 값은 고정되어있고  b와 c만 초기화 해주고 싶으면 convenience init을 사용한다. 

    conveience init(b: Int, c: Int) {
    	self.init(a: 1, b = b, c = c)
    }

     

    5. AnyObject에 대해 설명하시오.

    - Any는 모든 데이터 타입을 사용할 수 있다는 뜻이다. AnyObject는 Any보다는 한정된 의미로 모든 클래스 인스턴스만 할당할 수 있다. Swift는 데이터 타입에 많이 민감한 언어이기 때문에 Any와 AnyObject타입 사용을 지양한다. 또한 Any와 AnyObject의 타입은 컴파일 시점에서는 모르고 런타임 시점에서 결정되기 때문에 타입캐스팅을 해줘야 한다. 해주지 않으면 런타임 에러가 발생한다.

     

    6. Optional 이란 무엇인지 설명하시오.

    - Swift는 기본적으로 nil값이 들어가는 걸 허용하지 않기 때문에 이런 오류를 내지 않게 하기 위한 안전한 장치이다. ? 를 사용해서 표기한다.

     

    7. Struct가 무엇이고 어떻게 사용하는지 설명하시오.

    - struct는 구조체로 String이나 Int, Bool타입등 을 사용해서 새로운 타입을 만드는 것이다. struct는 값타입이고 상속이 불가능 하다는 특징이 있다.

     

    8. Subscripts에 대해 설명하시오. 

    - subscripts는 클래스, 구조체, 열거형같은 인스턴스를 index로 접근할 수 있게 해주는 서브스크립트이다.

     

    9. String은 왜 subscript로 접근이 안되는지 설명하시오.

    - 문자열에 문자들이 같은 메모리로 저장되는 것이 아니다. 예를 들어 "a"는 인코딩으로 할때 길이가 1을 차지하자만 "김"이라는 문자는 3을 차지한다. 이렇게 다르기 때문에 특정위치에 있는 문자에 접근하는 것은 불가능하다. String에서는 subscript대신 index로 위치에 접근할 수 있다. ( subscript를 사용하여 인덱스를 통해 컬렉션 내의 특정 요소에 접근하는 것이 일반적이다. )

     

    10. instance 메서드와 class 메서드의 차이점을 설명하시오.

    - 인스턴스 메서드는 인스턴스의 특정 상태를 변경하거나 해당 인스턴스에 대한 작업을 수행하는데 사용되고, 클래스 메서드는 클래스 또는 구조체 전체에서 공통적으로 사용되는 메서드이다.

Designed by Tistory.