Skip to content

Latest commit

 

History

History
454 lines (257 loc) · 26.4 KB

interview-questions.adoc

File metadata and controls

454 lines (257 loc) · 26.4 KB

Sir.LOIN 소프트웨어 엔지니어 인터뷰 질문 목록

저희는 눈 앞에 보이는 단순한 답 보다는 끊임없이 왜?, 어떻게? 라는 질문을 던지는 분을 찾고 있습니다.

요즘은 인터넷을 조금만 검색해도 수많은 인터뷰 질문들을 찾아보실 수 있습니다. 따라서 저희는 준비했던 질문 목록을 모두 공개하기로 결정했습니다. 그리하여 저희가 어떤 사람을 찾고 있는지 후보자님들께서 감을 잡으실 수 있다면 좋겠습니다.

너무 광범위해서 도저히 무리라고요? 괜찮습니다! 저희도 여기 있는 내용 전부 다 대답할 수는 없어요. 심지어 정답이 없는 문제가 대부분이죠. 그래서 사람마다 대답이 모두 다를 겁니다. 다만 자신있게 대답하실 수 있는 항목이 하나라도 있다면, 그건 여러분이 이미 훌륭하다는 증거입니다! 저희는 그런 분들과 함께 일하기를 간절히 기다리고 있습니다.

수준 낮은 퀴즈쇼 같아서 마음에 들지 않으신다고요? 그렇다면 바로 저희를 혼내주러 오세요. 기꺼이 배우겠습니다.

저희는 절대로 질문에 모두 답하는 후보자를 원하는 게 아닙니다. 이 정도라면 충분히 뽀갤 수 있겠다는 생각이 드시는 순간이, 바로 지원서를 작성하시는 순간입니다!

  1. 설로인 입사 이후, 3년 뒤 후보자의 모습, 10년 뒤 후보자의 모습에 대해 말씀해주세요.

  2. 수습 기간동안 어떻게 본인의 능력을 팀에게 증명해 보이시겠습니까?

  3. 일을 하던 중에, 다른 업무 요청이 들어온다면 어떻게 상황을 조율하시겠습니까?

  4. 제일 재미있게 들었던 학교 수업, 또는 최근 흥미가 있거나 재미있었던 개발 관련 소식 / 또는 해본 일중 기뻤거나 슬픈 일

  5. 후보자님께서 소프트웨어 엔지니어의 길을 걷기로 결심한 이유에 대해 말씀해 주세요.

  6. 납득가지 않는 일을 떠 맡게 되었다면, 갈등을 어떻게 해결하시겠습니까?

  7. 코드 리뷰에서 동료 코드의 어떤 점을 가장 중요하게 체크하시나요?

  8. 코드의 품질을 정의하는 후보자님만의 기준이 있습니까?

  9. Continuous Integration 의 중요성에 대해 설명해주세요.

  10. OpenJDK 는 GNU GPL 라이선스로 배포됩니다. GNU GPL 이 뭔가요?

  11. 정규표현식을 유용하게 사용한 경험이 있습니까? 또는 불편한 적은 없었나요?

  12. 저희 회사는 후보자님이 자신있어 하시는 XX 기술을 쓰지 않고 있습니다. 그 기술을 반드시 도입해야 한다고, 면접관을 어떻게 설득하시겠습니까?

  13. 업무 스케쥴링 하실 때, 시간 비용은 어떻게 산정하시나요?

  14. Agile 이 대세라고 하는데, Agile 개발 방법론에 대한 본인의 생각을 말씀해 주세요. Agile 의 단점은 없습니까?

  1. 컴퓨터는 10진수를 2진수로 바꿔서 계산합니다. 10진수를 2진수로 바꾸는 방법과, 그 반대 방법에 대해 설명해 주시기 바랍니다.

  2. 컴퓨터는 소숫점 계산을 잘 못합니다. 그 이유가 무엇일까요? 어떻게 문제를 해결할 수 있을까요? 직접 구현한다면 어떻게 하시겠습니까?

  3. Thread 간의 데이터 공유와 Process 간의 데이터 공유의 공통점과 차이점을 설명해주세요.

  4. 컴퓨터가 기계어를 읽고, 실행하는 과정에 대해 설명해 주실 수 있나요?

  5. 운영체제가 여러 프로그램을 동시에 실행하는 원리에 대해 설명해주세요.

  6. 컴파일러와 인터프리터는 어떤 차이가 있을까요?

  7. Garbage Collection 이란 무엇일까요? Garbage Collection 방식 중 제일 잘 알고 계시는 GC를 아무거나 하나만 설명해주세요.

  8. Garbage collection 이 있는 언어를 원자력 발전소, 자동차 동력 제어, 인공위성, 국가 전력망 제어시스템 같은 곳에 쓸 수 있을까요? 후보자님의 생각을 말씀해 주세요.

  9. 지금 이용하시는 기술/언어에서 제일 마음에 드는점과 불만인 점 한가지를 말씀해주세요.

  10. System call 이 뭔가요? System call 에 대해 설명해주세요.

  11. 바이트코드와 기계어의 차이에 대해 설명해주세요.

  12. Thread safety 란 뭔가요? 어떻게 구현해야 Thread safe 한 코드를 만들 수 있나요?

  13. bytecode 기반 언어는 디컴파일에 특히 취약하다는 문제가 있는데, 언어를 바꾸지 않고 이를 해결할 방법이 없을까요?

  14. 파이프(|) 란 무엇이고, 어떻게 동작하는지 설명해주세요.

  1. Socket 으로 바로 통신하는 것 대비 HTTP 는 비효율적인데도 왜 많은 앱들은 HTTP 를 쓰는 걸까요?

  2. OSI Layer 7 또는 TCP Model 에 대해 설명해주세요.

  3. 차세대 프로토콜로 논의중인 HTTP/3 은 UDP 기반의 QUIC 이라는 기술로 구현되어 있습니다. UDP 는 TCP 대비 안정성이 떨어지는 프로토콜이라고 하는데, 그럼에도 왜 UDP 를 채택한 걸까요?

  4. SSL (또는 TLS) 가 어떻게 동작하는지 말씀해주세요.

  5. HTTP 는 Stateless (상태가 없는) 통신 프로토콜이라고 합니다. 따라서, 상태가 없다면 가령 HTTP 를 쓰는 서비스는 매번 로그인을 해 줘야 하거나 사용자 정보를 저장하는 일이 불가능합니다. 그런데 실제론 그렇지 않죠. 어떻게 이런 불편함을 해소했을까요?

  6. 웹 브라우저에 https://www.google.com URL 을 입력 후 enter 를 쳤을 때 일어나는 과정을 최대한 상세하게 설명해주세요.

  7. HTTP(s) 프로토콜에서 바이너리 데이터를 전송하는 방식에 대해 설명해주세요.

  8. Socket 으로 웹 페이지를 크롤링하는 HTTP 클라이언트를 직접 구현해야 한다면, 어떻게 하시겠습니까?

  1. noSQL 과 RDB 의 특징, 차이에 대해 말씀해주세요. 어느 상황에 어떤 데이터베이스를 쓰는게 좋겠습니까?

  2. 데이터베이스가 자료를 빠르게 검색하기 위해 어떤 일을 할까요? 최대한 상세하게 설명해주세요.

  3. RDBMS 의 여러 JOIN 중 아무거나 하나 골라서, 그림으로 설명해 주실 수 있습니까?

  4. 데이터베이스 샤딩 / 파티셔닝에 대해 설명해주세요.

  5. 데이터베이스가 Index 를 이용해 자료를 빠르게 검색하는 과정을, 우리 할머니도 알아들을 수 있도록 설명해 주시겠어요?

  6. Stored procedure 를 이용한 시스템을 어떻게 유지보수 할 수 있습니까? Stored procedure 의 장점과 단점에 대해 말씀해 주세요.

  7. Optimistic Locking(낙관적 락) 과 Pessimistic Locking(비관적 락) 에 대해 설명해주세요. 각각의 락을 사용할 상황 또는 제품 사례를 말씀해주세요.

  8. 어떤 서비스의 이용자 테이블이 있다고 가정합시다. 이용자 id 를 여러 테이블에서 FK 로 참조하고 있습니다. 그런데 이용자 테이블에 환경설정, 개인정보 등 정보를 한데 저장하다보니 Column 이 40개가 넘게 있는 상태입니다. 문제를 진단해 주시고, 해결 방안도 제시해 주시기 바랍니다.

  9. Slow query 를 발견하고, 수정한 경험에 대해 말씀해 주세요.

  10. 저희는 도축장에서 전달받은 원육을 소매점에 도매하는 서비스를 운영하고 있습니다. 여기서, 원육과 소매점을 어떻게 테이블로 모델링 하시겠습니까?

  11. 어플리케이션의 문자열(String) 을 데이터베이스에 저장하기 위해 고려해야 할 사항에는 어떤 점이 있을까요?

  12. Big data 를 다루려면 RDBMS 보다 NoSQL 이 더 좋다는 말이 많습니다. 그렇다면 large data set 에는 항상 NoSQL 만 써야 할까요? 반드시 RDBMS 만을 이용해 large data set 을 다루려면 어떻게 해야 할까요?

  13. 실 서비스의 데이터를 조작하고, 또 조회해야 하는 Admin app 을 만들어야 한다면, 어떻게 구현하시겠습니까?

  14. 데이터 마이그레이션 기간 동안 서비스 순단을 최소한으로 하고 싶습니다. 이런 요구사항에 맞는 테이블을 어떻게 설계하시겠습니까?

  15. (JPA 경험자 한정) JPA 를 이용할 때, JPQL 을 쓰는 경우가 종종 있는데, JPQL 을 쓰시며 좋았던 점과 불편했던 점을 말씀해 주세요.

  16. (JPA 경험자 한정) JPA 의 @Entity 란 뭔가요? 도메인 객체와 Entity 객체를 각각 어떻게 정의하시겠습니까?

  1. 지금 사용하시는 스마트폰의 화면을 캡쳐하는 프로그램을 만들어야 한다면 어떻게 하시겠습니까?

  2. 전화번호와 같은 민감한 정보를 어떻게 저장하는게 좋을까요? 관리자조차 모르게 저장하고 싶다면?

  3. 암호화란 무엇일까요? 알고 계신 암호화 방식 아무거나 하나만 설명해주세요.

  4. 어떤 알고리즘을 도입하기 전에, 성능을 판별해 보고자 합니다. 어떤 방법을 활용해, 어떤 기준으로 알고리즘의 효율을 판단하시겠습니까?

  5. 공개 키 암호화와 비밀 키 암호화에 대해 설명해주세요.

  6. 캡슐화에 대해 설명해주세요.

  7. 캐시란 뭐고, 어떤 목적으로 쓰는 건가요?

  8. List 와 Set 의 차이에 대해 설명해주세요.

  9. 이진 탐색의 최선 / 최악의 경우에 대해 말씀해주세요.

  10. 손실 압축과 무손실 압축의 차이에 대해 설명해주세요.

  11. RSA 로 공개 키를 만들 때, 키 길이를 정하는 기준이 있습니까? 키 길이를 길게 하면 암호화 문제를 완벽 해결할 수 있나요?

  12. 순환 Queue 를 만드려면 어떻게 하시겠습니까? 그리고 어떤 Queue 또는 Graph 가 무한 순환 구조라는 것을 어떻게 판단하시겠습니까?

  13. 압축 알고리즘을 설계하라는 요구사항이 들어왔다면, 어떻게 구현하시겠습니까?

  14. 전화번호부 앱을 만든다고 가정하겠습니다. 1명당 1KiB의 정보를 갖도록 모델을 설계했습니다. 앱이 온전히 사용할 수 있는 메모리가 4메가인 기기에서, 10000명(총 10메가)의 이용자 정보를 검색할 수 있도록 구현해야 합니다. 어떻게 하시겠습니까?

  15. (JVM 경험자 한정) 배열과 ArrayList, LinkedList 의 차이점은 무엇인가요?

  1. Singleton pattern 이란 무엇이고, 어떤 장점과 단점이 있을까요?

  2. 싱글턴 코드는 테스트를 어렵게 만드는 문제가 있습니다. 왜 그럴까요? 싱글턴이 좋지 않다는데 왜 스프링 프레임워크 같은 녀석들은 별다른 규칙이 없을 때 기본으로 Singleton bean 을 만들까요?

  3. 좋은 Test 라고 평가할 수 있는 가장 중요한 요소를 말씀해주세요. 후보자님은 어떤 Test 를 좋은 Test 라고 정의하십니까?

  4. Callback function(또는 Closure) 이 뭔가요? 주의할 점이 있을까요?

  5. Mutable, Immutable 이란 뭔가요? 각각은 어떤 특징이 있을까요?

  6. Acceptance, Smoke, End-to-End, Integration, Unit test 같은 용어들을 본인만의 방법으로 구분짓는 기준이 있습니까?

  7. 메소드의 파라미터로 전달한 객체를 메소드 내에서 마음대로 바꾸지 못 하게 하려면 어떻게 코딩하는게 좋을까요? 왜 메소드가 파라미터를 조작하는 것이 문제가 될까요? 문제가 아닐 수도 있지 않을까요?

  8. 음료수 자판기에 탑재한 소프트웨어를 제작했다고 가정해 보겠습니다. 작성하신 소프트웨어의 통합 테스트 시나리오를 어떻게 작성하시겠습니까? 생각나는대로 말씀해 주세요.

  9. 현재 다루시는 플랫폼에서의 테스트 자동화를 어떻게 구축 하시겠습니까?

  10. test code 를 작성하는 본인만의 기준이 있습니까? test 실행 속도를 높이려면 어떤 방법이 좋을까요?

  11. blackbox testing, whitebox testing 의 차이에 대해 설명해주세요. 어떤 상황에서 어떤 테스트 방법을 사용하시겠습니까?

  12. 상속의 이점 중 "코드의 중복을 줄여준다" 는 말이 있습니다. 그런데 코드 중복을 줄이기 위해서 상속을 쓰는 것은 매우 좋지 않은 코딩 방식이라고 저희는 생각합니다. 이에 대한 후보자님의 의견을 듣고 싶습니다.

  13. Java 의 Marker interface (아무 메소드도 없이 타입만 있는) 에 대해 어떻게 생각하시나요?

  14. 코드 응집성(cohesion)이란 말을 어떻게 설명하실 수 있습니까? 응집도가 낮은 코드와 높은 코드를 예를 들어 설명해 주세요.

  15. NodeJS 로 실행하는 서버와 통신하는 Spring 또는 Python 서버를 구현할 때, 어떻게 하시겠습니까? HTTP 외의 방법을 쓰고 싶다면 어떻게 해야 할까요?

  16. 네이버 같은 서비스에서 IP 주소가 바뀔 경우 접속 경고 등의 오류를 발생시킨다. 어떻게 구현하시겠습니까?

  17. 서비스의 memory leak 을 어떻게 판단하고, 해결하시겠습니까?

  18. 우리 서비스가 대 성공해서 이용자가 4000만이 되었다고 가정합니다. 이용자 4천만 돌파 기념으로 선착순으로 접속한 사용자에게 보너스 포인트를 주는 이벤트를 운영하려 합니다. 모든 이용자들에게 공평하게, 플랫폼이 제공하는 Push 를 보내려 하는데요. 이 경우, 어떤 점들을 고려해야 할까요?

  19. MSA vs Monolithic 을 선택하는 기준이 있습니까?

  20. M 인프라 시스템이 A 시스템 대비 가격이 많이 싸졌다고 가정해 보겠습니다. 우리의 인프라 시스템을 A 에서 M 으로 최대한 빨리 바꾸려면 어떤 점을 고려해야 할까요?

  21. 우리 앱의 어떤 페이지(또는 특정 view) 의 로딩이 매우 늦다면 어떻게 개선할 수 있을까요?

  22. 우리가 사용하는 앱들의 API 는 예고없이 바뀌기도 합니다. 외부 API 가 마구 변경되는 상황에서도 우리 앱이 크래시 나지 않게 하려면 어떻게 해야 할까요?

  23. 제작한 애플리케이션이 얼마나 사용자 친화적인지를 측정할 수 있는 방법이 있을까요?

  24. 한 화면을 그리기 위해 필요한 HTTP API 가 10개가 있다고 가정하겠습니다. 이 API 들을 호출하는 로직들을 포함한 10개의 Repository 들이 있습니다. 그런데 서버의 사양이 좋지 않아 API 는 반드시 1개만 처리할 수 있습니다. 즉, 10개를 한꺼번에 동시에 호출할 수 없는 상황이라고 합니다. 따라서 UI 에서 10개의 Repository 들에 한꺼번에 API Call 을 호출하더라도, 실제 네트워크 통신은 동시에 오직 1개만 호출되어야 합니다. 이 상황을 해결할 수 있는 HTTP API Layer 를 어떻게 디자인 하시겠습니까?

  1. JVM 에서의 autoboxing 이란 어떤 현상을 말하는 걸까요?

  2. interface default implementation 이란? abstract class 를 상속받는 것과 기본 구현을 들고 있는 interfaceimplements 하는것은 어떤 차이가 있나요?

  3. Java stream method 중 mapflatMap 의 차이에 대해 설명해주세요.

  4. 메소드에서 리스트 타입의 파라미터를 받을 때, ArrayList - List - Collection - Iterable 처럼 구체 타입 뿐 아니라 상위 타입도 받을 수 있습니다. 컬렉션을 받는 어떤 API 를 구현하실 때 구체 타입의 API 디자인을 선호하는지, 추상 타입의 API 디자인을 선호하는지를 설명해 주세요. 왜 그런 선택을 하시나요?

  5. Java 의 equals== 의 차이에 대해 설명해주세요. Kotlin 의 ===== 는 어떤 차이가 있나요?

  6. 스프링의 @Autowired 를 가급적 쓰지 말라는 이야기가 종종 들리는데 원인이 뭘까요?

  7. final 키워드를 변수, 메소드, 클래스에 선언하는 것은 어떤 의미가 있습니까?

  8. synchronized 를 메소드에 선언하는 것과, 특정 객체에 선언하는 것은 어떤 차이가 있습니까?

  9. Reflection 을 유용하게 사용하는 사례를 말씀해 주세요.

  10. JDK/JVM 은 대표적으로 OpenJDK 와 Oracle JDK 로 나뉘는데요, 업무에 어떤 JDK 를 사용하시겠습니까? 선택의 이유를 말씀해 주세요.

  11. hashCode / equals 메소드의 역할에 대해 아시는 내용을 최대한 설명해주세요.

  12. Java 의 Collections.unmodifiableList 같은 API 를 이용해 List 같은 collection 을 변경 불가능하게 만들 수 있습니다. 그렇다면 이 API 를 사용하면 immutability 를 달성할 수 있을까요?

  13. 다음 싱글턴 코드의 어떤 점을 개선하실 수 있습니까? (개선이 필요 없을 수도 있음 / 왜?)

    class MySingleton {
      private static MySingleton instance;
    
      public static synchronized MySingleton getInstance() {
        if (instance == null) {
            instance = new MySingleton();
        }
        return instance;
      }
    }
  14. java 9 이상에 도입된 추가 기능들 중 마음에 드는거 아무거나 하나만 설명해주세요.

  15. 민감한 정보를 String 으로 저장하는 것과, char[] 또는 StringBuilder/StringBuffer 같은 클래스로 저장하는 것은 어떤 차이가 있나요?

  16. 크기를 지정하지 않고 ArrayList 를 new 로 생성하면 크기 10의 ArrayList 가 생성됩니다. Array 는 크기를 넘길 수 없는데 반해 ArrayList 는 꽉 찬 List 에 element 를 추가로 더할 수 있습니다. 그렇다면 10개의 element 를 채워넣은 ArrayList 의 11번째 element 을 add 하기위해 어떤 일이 일어나는지 설명해주세요.

  17. java.lang.StringhashCode 구현에 대해 고찰해 봅시다. 왜 그런 구현일지, 문제점은 없을지 이야기해주세요.

  18. lambda 와 메소드 1개만 있는 익명 클래스 직접 선언은 문법적 차이 외에 어떤 내부적인 차이가 있을까요?

  19. Java generics 에는 primitive type 을 쓸 수 없는 문제가 있습니다. 왜 그럴까요? 어떻게 해결할 수 있을까요?

  20. I/O 를 Java nio 로 코딩할 때 주의점은 어떤게 있을까요?

  21. Java 는 Pure OOP 언어가 아니라고 하는데, 왜 그런 걸까요?

  22. java.lang.Stringlength 메소드는 정확한 결과를 반환하지 않는 경우가 종종 있습니다. 정확한 의 의미란 무엇이고, 왜 그럴까요?

  23. Maven 이나 Gradle 이, 의존성 선언한 artifact 들을 찾는 과정에 대해 설명해주세요.

  24. java.util.Property extends Hashtable, java.util.Stack extends Vector 같은 클래스는 상속으로 망한 대표 사례입니다. 이유를 설명해 주세요.

  25. Spring boot 가 stereotype annotation 을 붙인 클래스들을 어떻게 찾고 bean 으로 등록하는지 그 과정을 최대한 상세하게 설명해주세요.

  26. Spring 은 @Transactional 어노테이션 붙인 메소드를 어떻게 찾고 트랜잭션을 처리하나요? 그 내부 구현을 상세하게 설명해 주세요.

  27. 메소드에 @Transactional 을 붙이는 것과, TransactionTemplate 을 사용해 트랜잭션을 직접 제어하는 것에는 어떤 차이가 있나요? 어떤 방식을 더 선호하시는지 그 이유도 함께 설명해 주시기 바랍니다.

  1. Kotlin 으로 작성한 jvm target 코드는 숨은 비용이 있습니다. 어떤 숨은 비용을 말하는걸까요? 그럼에도 불구하고 Kotlin 을 써야 할까요?

  2. Kotlin extension function 이 실제 native code 로 바뀔 때 어떤 형태로 바뀌는지 설명해주세요.

  1. StatelessWidget 와 StatefulWidget 의 차이에 대해 설명해 주세요.

  2. BuildContext 가 뭔가요?

  3. web build 한 flutter app 을 기존의 web server project 에 통합하고 싶습니다. 즉, 웹서버만 띄워도 flutter app 도 같이 동작하게 하는 방식이요. 어떻게 하는게 좋을까요?

  4. mainAxisAlignment 와 crossAxisAlignment 가 뭔가요? Row()Column() 에서 각각 어떤 차이가 있습니까?

  5. dynamicObject 의 공통점과 차이점에 대해 말씀해주세요.

  6. factory 키워드와 static 키워드를 이용해 객체를 만드는 방법은 어떤 공통점과 차이점이 있을까요?

  7. const 키워드에 대해 설명해 보세요. 다른 언어와 어떤 차이점이 있습니까?

  8. mixin 이 뭔가요? mixin 을 우리 할머니도 알아들으실 수 있도록 설명하실 수 있습니까?

    • mixin 과 abstract class 의 차이에 대해 설명해 주세요.

  9. 도대체 mixin 은 왜 있는 걸까요? 구현 메소드 전혀 없는 abstract class 들만 써서 다중 상속을 구현할 수 있는데 말이죠. 상속 대신 mixin 을 반드시 써야 하는 상황을 알고 계신다면 설명해 주실 수 있습니까?

  10. StreamBroadcast Stream 의 차이에 대해 설명해 주세요.

  11. Widget testing 과 unit testing 의 공통점과 차이점을 이야기 해 주시기 바랍니다.

  12. isolate 에 대해서 최대한 상세하게 설명해 주시기 바랍니다. iOS 나 Android native 와 비교해서 설명해 주신다면 더욱 좋습니다.

  13. Flutter 를 쓰면 1벌의 코드로도 다양한 플랫폼용 앱을 만들 수 있습니다. 그런데 그게 진짜일까요? 불가능하다면 왜 불가능할까요?

  14. FutureStream 의 공통점과 차이점에 대해 설명하실 수 있습니까?

  15. StatefulWidget 이 가지는 State 의 생명주기를 최대한 상세하게 설명해 주세요.

  16. Flutter Widget 의 생명주기에 대해 최대한 상세하게 설명해 주세요.

    • 인터넷 연결을 체크해서 서버로부터 데이터를 가져오는 로직은 어느 생명주기에 구현하는게 좋을까요?

  1. object 의 기본 메소드인 __eq__, __hash__ 에 대해 설명해 주세요. 두 메소드를 모두 구현할 때, 어떤 점을 주의해야 할까요?

  2. Memory leak 을 유발하는 python 코딩 패턴의 사례를 말씀해주세요.

  3. yield 키워드의 역할에 대해 설명해주세요.

  4. Global Interperter Lock 에 대해 설명해주세요.

  1. Promise 에 대해 설명해 보세요.

  2. Typescript 의 typeinterface 의 공통점 및 차이점을 설명해 보세요.

  3. Typescript 의 interface 의 특징? 컴파일 이후에는 어떻게 되는지 말씀해주세요.

  4. Javascript 와 Java 의 차이를 우리 할머니도 알아들으실 수 있도록 설명해주실 수 있습니까?

  5. Map 의 키로 number, string 대신 object 를 쓰고 싶다면, 어떤 점을 고려해야 합니까?

  6. Prototype 기반 상속과 일반적인 OOP 에서의 상속은 어떤 차이가 있습니까?

  1. 비동기로 처리한 작업을 UI 에 표시하기 위해 어떤 일이 필요한지 설명해주세요.

  2. 안드로이드 Activity 처리 결과를 다루는 onActivityResult 메소드는 왜 deprecated 처리되었을까요?

  3. ViewGroup 내에 선언한 View 들에 onClickListener 를 선언할 경우 안드로이드가 이벤트를 어떻게 핸들링하는지 설명해 주시기 바랍니다.

  4. systrace 가 뭐고, 결과 분석은 어떻게?

  5. Memory leak 을 유발하는 coding pattern?

  6. Dagger 를 왜 쓸까요? 다른 대안은 없나요?

  7. Android HAL(Hardware Abstraction Layer) 에 대해 설명해주세요.

  1. 비동기로 처리한 작업을 UI 에 표시하기 위해 어떤 일이 필요한지 설명해주세요.

    • Main thread queue 에 sync call 을 하면 어떤 일이 발생할까요?

  2. protocol` 이란? protocol 에 대해 아시는 내용을 최대한 많이 말씀해 주시기 바랍니다.

  3. structclass 는 어떤 차이가 있나요?

  4. Swift 에서 제공하는 ARC 에 대해 상세하게 설명해 주세요. ARC 와 Garbage Collection 은 같은 개념인가요, 다른 개념인가요?

    • 그렇게 생각하시는 이유는 뭔가요?

  5. Swift optional 은 좋지만 일종의 wrapper 타입이므로 이걸 벗겨내야 하는 과정이 언젠가는 필요합니다. Optional 을 자주 쓰시나요? 아니면 안 쓰시나요?

    • 이유가 있나요?

  6. 메모리 누수로 App 을 크래시 시키려면 어떻게 코딩하면 될까요?

  7. 클래스 멤버함수를 class funcstatic func 으로 선언할 때의 차이점을 말씀해주세요.

  8. closure 내부에서 클래스 변수를 참조하면 어떤 일이 발생하나요?

  9. @escaping / @nonescaping closure 의 차이를 말씀해주세요.

  10. 아래 swift code 을 살펴보고, 개선 방향을 제시해 주시기 바랍니다.

    class HTMLElement {
        let name: String
        let text: String?
    
        lazy var asHTML: () -> String = {
            if let text = self.text {
                return "<\(self.name)>\(text)</\(self.name)>"
            } else {
                return "<\(self.name) />"
            }
        }
    
        init(name: String, text: String? = nil) {
            self.name = name
            self.text = text
        }
    
        deinit {
            print("\(name) is being deinitialized")
        }
    }
  11. Hashablehash() 함수를 구현했지만 Equatable 의 operator 를 제대로 구현하지 않은 타입을 Dictionary 에 반복해서 넣고 꺼내고 하다 보면 어떤 문제가 발생할까요?

  1. 비동기로 처리한 작업을 UI 에 표시하기 위해 어떤 일이 필요한지 설명해주세요.

  2. DOM 의 class 와 id 의 차이?

  3. Event bubbling 과 Event capturing 에 대해 설명해주세요.

  4. 웹 UI 프레임워크들은 SPA 로 개발하는게 2022년 현재 대세인데 native app 에서는 그런 방식이 일반적이지 않다. 왜 그럴까요?

  5. flutter/RN 이 제공하는 hot reload 와 hot restart(live reload) 의 차이에 대해 설명해주세요.

  6. React 를 이용해 구현한 SPA 의 SEO 경험을 공유해주세요.