신입 개발자로 취업하려고 하는 데 면접 때 가장 많이 듣는 질문과 답변을 알려줘


wrtn.ai 답변

아래에는 신입 개발자로서 면접에서 자주 물어보는 질문들과 그에 대한 간략한 답변을 작성해봤습니다.

  1. 질문: 자신을 간략하게 소개해주세요. 답변: 저는 (대학명)에서 컴퓨터 공학을 전공했으며, (사용 가능한 프로그래밍 언어)를 주로 사용합니다. 학교에서 진행한 프로젝트나 개인적으로 진행한 프로젝트를 통해 실제 개발 경험을 쌓았습니다.

  2. 질문: 어떤 프로그래밍에 능숙하신가요? 답변: 저는 (능숙한 프로그래밍 언어)에 대해 깊이 있게 공부했고 이를 활용한 여러 프로젝트를 해 보았습니다.

  3. 질문: 소프트웨어 개발에서 가장 중요하다고 생각하는 것은 무엇인가요? 답변: 저는 팀워크와 효율적인 커뮤니케이션을 중요하게 생각합니다. 또한 사용자를 위한 개발이라는 마인드를 가지고 있습니다.

  4. 질문: 최근에 참여했던 프로젝트에 대해 설명해주세요. 답변: (당신이 최근에 참여했던 프로젝트에 대한 설명을 제공해주세요). 이는 당신의 기획력, 창의력 그리고 문제 해결 능력을 보여줄 수 있는 기회입니다.

  5. 질문: 어떤 개발 도구나 기술을 사용해 본 경험이 있나요? 답변: 저는 (당신이 사용해 본 개발 도구나 기술)을 사용한 경험이 있습니다. 이를 통해 효과적인 개발을 수행했습니다.

  6. 질문: 앞으로 어떤 개발자가 되고 싶으신가요? 답변: 저는 사용자와 시장의 필요성을 끊임없이 연구하는 개발자가 되고 싶습니다. 또한, 계속해서 새로운 기술을 배워 나가는 성장하는 개발자가 되고 싶습니다.

이러한 질문들은 면접관이 신의 커뮤니케이션 능력과 문제 해결 능력을 평가하는 데 사용됩니다. 따라서 이에 대한 준비를 철저히 해야 합니다.

Swift 문법 VS Kotlin 문법


항목 Swift Kotlin
변수 선언 변경 가능: var, 변경 불가능: let 변경 가능: var, 변경 불가능: val
Null 가능성 옵셔널을 통한 Null 가능성 표현 Null 가능성을 타입 시스템에 통합
클래스 정의 class 키워드 사용 class 키워드 사용
함수 선언 func 키워드 사용 fun 키워드 사용
상수 선언 let 키워드 사용 val 키워드 사용
문자열 템플릿 () 문법 사용 $ 또는 ${} 문법 사용
배열 선언 [] 문법 사용 arrayOf 함수를 이용한 문법 사용
딕셔너리 선언 [:] 문법 사용 mapOf 함수를 이용한 문법 사용
범위 정의 …, ..< 사용 .. 사용
예외 처리 do, try, catch 문 사용 try, catch 문 사용 (체크 예외 없음)

cross platform으로 앱을 개발할 때 RN과 Flutter의 장단점


항목 React Native Flutter
개발 언어 JavaScript Dart
개발 회사 Facebook Google
성능 네이티브에 가까운 성능 네이티브와 비슷한 성능
UI 구성 네이티브 컴포넌트 사용 위젯 시스템 사용
학습 곡선 비교적 낮음 (많은 개발자가 JS에 익숙함) 비교적 높음 (Dart에 익숙한 개발자가 적음)
코드 재사용 가능 가능
커뮤니티 지원 강력 (오래된 기술) 점점 강해지는 중 (신생 기술)
대표 사례 Facebook, Instagram, Airbnb 등 Google Ads, Alibaba, Reflectly 등
Hot Reload 지원 지원

사람인 기준 공고가 많은 기술스택


image

자신의 이름 10번 출력하기


// for-loop를 시작합니다. '_'는 반복 변수로, 이 경우에는 사용되지 않습니다.
for _ in 1...10 {
    // "Choi"라는 문자열을 콘솔에 출력합니다. 이 작업을 10번 반복하게 됩니다.
    print("Choi")
}
for (i in 1..10) {
    println("Choi")
}
for (int i = 0; i < 10; i++) {
    System.out.println("Choi");
}
for (let i = 0; i < 10; i++) {
    console.log("Choi");
}

Swift의 중요한 문법을 이해할 수 있는 소스를 작성해줘


// 변수 선언: var 키워드를 사용해 변수를 선언합니다. 값은 변경이 가능합니다.
var name = "Choi"

// 상수 선언: let 키워드를 사용해 상수를 선언합니다. 한 번 할당된 값은 변경이 불가능합니다.
let birthYear = 1990

// 함수 선언: func 키워드를 사용해 함수를 선언합니다.
func greet(person: String) -> String {
    // 문자열 보간: \(변수명) 형태로 문자열 내에 변수를 삽입할 수 있습니다.
    return "Hello, \(person)!"
}

// 함수 호출: 함수명과 함께 괄호 안에 인자를 전달해 함수를 호출합니다.
let greeting = greet(person: name)

// 조건문: if-else 문을 사용해 조건에 따른 로직을 작성할 수 있습니다.
if birthYear < 2000 {
    print("\(name) is a 90's kid.")
} else {
    print("\(name) is a 2000's kid.")
}

// 배열: 여러 값을 한 번에 저장할 수 있는 컬렉션 타입입니다.
var numbers = [1, 2, 3, 4, 5]

// for-in 문: 컬렉션 내의 각 요소에 대해 반복 작업을 수행합니다.
for number in numbers {
    print("Number is \(number)")
}

// 옵셔널: 값이 있을 수도, 없을 수도 있는 상황을 표현할 수 있습니다.
var optionalString: String? = "Hello"

// 옵셔널 바인딩: 옵셔널의 값을 안전하게 추출하는 방법입니다.
if let unwrappedString = optionalString {
    print("Unwrapped string is \(unwrappedString)")
} else {
    print("The string is nil")
}

Swift 언어의 문법을 중요한 순서대로 설명해줘


  1. 변수와 상수 선언: Swift에서는 var 키워드를 사용해 변수를, let 키워드를 사용해 상수를 선언합니다.
var name = "Choi" // 변수
let birthYear = 1990 // 상수
  1. 타입 어노테이션: Swift는 타입 추론을 지원하지만, 필요에 따라 변수나 상수의 타입을 명시적으로 선언할 수 있습니다.
var name: String = "Choi" // String 타입 변수
let birthYear: Int = 1990 // Int 타입 상수
  1. 함수 선언 및 호출: Swift에서는 func 키워드를 사용해 함수를 선언하고, 함수 이름과 괄호를 사용해 호출합니다.
func greet(name: String) -> String {
   return "Hello, \(name)"
}
let greeting = greet(name: "Choi") // 함수 호출
  1. 조건문: Swift는 if 문을 사용해 조건에 따른 로직을 작성할 수 있습니다.
if birthYear < 2000 {
 print("\(name) is a 90's kid.")
} else {
   print("\(name) is a 2000's kid.")
}
  1. 반복문: Swift는 for-in 문을 사용해 컬렉션 내의 각 요소에 대해 반복 작업을 수행합니다.
var numbers = [1, 2, 3, 4, 5]
for number in numbers {
    print("Number is \(number)")
}
  1. 옵셔널: Swift는 값이 있을 수도, 없을 수도 있는 상황을 표현하는 옵셔널 타입을 제공합니다. 옵셔널은 ?를 사용해 선언하며, 옵셔널 바인딩(if let)이나 강제 추출(!)을 통해 값에 접근할 수 있습니다.
var optionalString: String? = "Hello"
if let unwrappedString = optionalString {
    print("Unwrapped string is \(unwrappedString)")
} else {
    print("The string is nil")
}

함수형 언어가 어떤 특징을 가지고 있는지 예를들어 설명해줘.


함수형 프로그래밍 언어는 몇 가지 중요한 특징을 가지고 있습니다:

  1. 불변성(Immutability): 함수형 프로그래밍에서는 데이터의 상태를 변경하지 않습니다. 대신, 변경된 상태를 가진 새로운 객체를 생성합니다. 이로 인해 프로그램의 복잡성이 줄어들고, 코드의 예측 가능성과 안정성이 향상됩니다.

  2. 순수 함수(Pure Functions): 순수 함수는 동일한 입력에 대해 항상 동일한 출력을 반환하며, 부작용(side effects)가 없습니다. 이는 테스트와 디버깅을 쉽게 만들고, 코드의 재사용성을 높입니다.

  3. 고차 함수(Higher-Order Functions): 함수형 프로그래밍에서는 함수를 다른 함수의 인자로 전달하거나 함수에서 함수를 반환할 수 있습니다. 이를 통해 코드의 재사용성이 높아지며, 복잡한 연산을 간단하게 표현할 수 있습니다.

  4. 재귀(Recursion): 함수형 프로그래밍에서는 반복문 대신 재귀를 사용합니다. 이는 코드의 가독성을 높이며, 알고리즘을 더 명확하게 표현할 수 있게 합니다.

  5. 지연 계산(Lazy Evaluation): 함수형 언어는 필요할 때까지 표현식 평가를 미룰 수 있습니다. 이를 통해 무한한 데이터 구조를 다루거나, 성능 최적화를 할 수 있습니다.

박스오피스 앱 만들기 (영화 순위 정보)


image

{
  "boxOfficeResult": {
    "boxofficeType": "일별 박스오피스",
    "showRange": "20240306~20240306",
    "dailyBoxOfficeList": [
      {
        "rnum": "1",
        "rank": "1",
        "rankInten": "0",
        "rankOldAndNew": "OLD",
        "movieCd": "20234675",
        "movieNm": "파묘",
        "openDt": "2024-02-22",
        "salesAmt": "1646514458",
        "salesShare": "62.7",
        "salesInten": "-150610462",
        "salesChange": "-8.4",
        "salesAcc": "63426452903",
        "audiCnt": "174679",
        "audiInten": "-15860",
        "audiChange": "-8.3",
        "audiAcc": "6606398",
        "scrnCnt": "2021",
        "showCnt": "7646"
      },
      {
        "rnum": "2",
        "rank": "2",
        "rankInten": "0",
        "rankOldAndNew": "OLD",
        "movieCd": "20236295",
        "movieNm": "듄: 파트2",
        "openDt": "2024-02-28",
        "salesAmt": "534462770",
        "salesShare": "20.4",
        "salesInten": "55456524",
        "salesChange": "11.6",
        "salesAcc": "10582691576",
        "audiCnt": "45584",
        "audiInten": "5110",
        "audiChange": "12.6",
        "audiAcc": "951050",
        "scrnCnt": "990",
        "showCnt": "2658"
      },
      {
        "rnum": "3",
        "rank": "3",
        "rankInten": "39",
        "rankOldAndNew": "OLD",
        "movieCd": "20236732",
        "movieNm": "가여운 것들",
        "openDt": "2024-03-06",
        "salesAmt": "128182104",
        "salesShare": "4.9",
        "salesInten": "127607804",
        "salesChange": "22219.7",
        "salesAcc": "186024709",
        "audiCnt": "13536",
        "audiInten": "13480",
        "audiChange": "24071.4",
        "audiAcc": "18975",
        "scrnCnt": "471",
        "showCnt": "838"
      },
      {
        "rnum": "4",
        "rank": "4",
        "rankInten": "8",
        "rankOldAndNew": "OLD",
        "movieCd": "20234789",
        "movieNm": "패스트 라이브즈",
        "openDt": "2024-03-06",
        "salesAmt": "71103168",
        "salesShare": "2.7",
        "salesInten": "66201968",
        "salesChange": "1350.7",
        "salesAcc": "134675834",
        "audiCnt": "8376",
        "audiInten": "7826",
        "audiChange": "1422.9",
        "audiAcc": "15009",
        "scrnCnt": "606",
        "showCnt": "1112"
      },
      {
        "rnum": "5",
        "rank": "5",
        "rankInten": "-1",
        "rankOldAndNew": "OLD",
        "movieCd": "20236180",
        "movieNm": "웡카",
        "openDt": "2024-01-31",
        "salesAmt": "59841799",
        "salesShare": "2.3",
        "salesInten": "-5508882",
        "salesChange": "-8.4",
        "salesAcc": "31923696035",
        "audiCnt": "6263",
        "audiInten": "-634",
        "audiChange": "-9.2",
        "audiAcc": "3319947",
        "scrnCnt": "530",
        "showCnt": "881"
      },
      {
        "rnum": "6",
        "rank": "6",
        "rankInten": "-3",
        "rankOldAndNew": "OLD",
        "movieCd": "20247074",
        "movieNm": "건국전쟁",
        "openDt": "2024-02-01",
        "salesAmt": "46281334",
        "salesShare": "1.8",
        "salesInten": "-26199339",
        "salesChange": "-36.1",
        "salesAcc": "10374706987",
        "audiCnt": "5591",
        "audiInten": "-2855",
        "audiChange": "-33.8",
        "audiAcc": "1114199",
        "scrnCnt": "397",
        "showCnt": "520"
      },
      {
        "rnum": "7",
        "rank": "7",
        "rankInten": "-2",
        "rankOldAndNew": "OLD",
        "movieCd": "20247076",
        "movieNm": "귀멸의 칼날: 인연의 기적, 그리고 합동 강화 훈련으로",
        "openDt": "2024-02-14",
        "salesAmt": "28977400",
        "salesShare": "1.1",
        "salesInten": "5137800",
        "salesChange": "21.6",
        "salesAcc": "5302024000",
        "audiCnt": "3021",
        "audiInten": "658",
        "audiChange": "27.8",
        "audiAcc": "466199",
        "scrnCnt": "174",
        "showCnt": "268"
      },
      {
        "rnum": "8",
        "rank": "8",
        "rankInten": "0",
        "rankOldAndNew": "NEW",
        "movieCd": "19970037",
        "movieNm": "비트",
        "openDt": "1997-05-03",
        "salesAmt": "19639500",
        "salesShare": "0.7",
        "salesInten": "19639500",
        "salesChange": "100",
        "salesAcc": "29306600",
        "audiCnt": "2745",
        "audiInten": "2745",
        "audiChange": "100",
        "audiAcc": "4306",
        "scrnCnt": "71",
        "showCnt": "154"
      },
      {
        "rnum": "9",
        "rank": "9",
        "rankInten": "0",
        "rankOldAndNew": "NEW",
        "movieCd": "20230614",
        "movieNm": "대결! 애니메이션",
        "openDt": "2024-03-06",
        "salesAmt": "13590263",
        "salesShare": "0.5",
        "salesInten": "13590263",
        "salesChange": "100",
        "salesAcc": "30566263",
        "audiCnt": "2122",
        "audiInten": "2122",
        "audiChange": "100",
        "audiAcc": "4244",
        "scrnCnt": "103",
        "showCnt": "170"
      },
      {
        "rnum": "10",
        "rank": "10",
        "rankInten": "-3",
        "rankOldAndNew": "OLD",
        "movieCd": "20231415",
        "movieNm": "소풍",
        "openDt": "2024-02-07",
        "salesAmt": "10707600",
        "salesShare": "0.4",
        "salesInten": "-2721900",
        "salesChange": "-20.3",
        "salesAcc": "2931893449",
        "audiCnt": "1274",
        "audiInten": "-278",
        "audiChange": "-17.9",
        "audiAcc": "327321",
        "scrnCnt": "87",
        "showCnt": "96"
      }
    ]
  }
}

출처 : 영화진흥위원회 일별 오피스 OPEN API

JSON 데이터를 가독성이 좋게 수정하기

Code beutyfi 사이트를 이용하면 JSON 데이터를 가독성이 좋게 수정할 수 있다.

image

tree view image

Swift 구조체 형식으로 수정

struct BoxOfficeResult: Codable {
    let officeType: String
    let showRange: String
    let dailyBoxOfficeList: [DailyBoxOffice]

    struct DailyBoxOffice: Codable {
        let rnum: String
        let rank: String
        let rankInten: String
        let rankAndNew: String
        let movie: String
        let openDt: String
        let salesAmt: String
        let salesShare: String
        let salesInten: String
        let salesChange: String
        let salesAcc: String
        let audiCnt: String
        let audiInten: String
        let audiChange: String
        let audiAcc: String
        let scrCnt: String
        let showCnt: String
    }
}

Java의 클래스 형식으로 수정

import java.util.List;

public class BoxOfficeResult {
    private String boxofficeType;
    private String showRange;
    private List<DailyBoxOfficeList> dailyBoxOfficeList;

    // Getters and Setters

    public static class DailyBoxOfficeList {
        private String rnum;
        private String rank;
        private String rankInten;
        private String rankOldAndNew;
        private String movieCd;
        private String movieNm;
        private String openDt;
        private String salesAmt;
        private String salesShare;
        private String salesInten;
        private String salesChange;
        private String salesAcc;
        private String audiCnt;
        private String audiInten;
        private String audiChange;
        private String audiAcc;
        private String scrnCnt;
        private String showCnt;

        // Getters and Setters
    }
}








출처


  • Smile Han의 iOS 프로그래밍 실무, 한성현(출판 예정), PPT로 제공
  • Do it! 스위프트로 아이폰 앱 만들기 입문(개정 7판)(이지스퍼블리싱,송호정, 이범근, 2023.1)
  • 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍(제이펍, 닐 스미스, 2023.12)
    • https://www.techotopia.com/index.php/IOS_iPhone_iPad_eBooks
  • 스위프트 프로그래밍(Swift 5) 3판(한빛미디어, 야곰, 2019.10)
  • 꼼꼼한 재은 씨의 스위프트 기본편 (루비페이퍼, 이재은, 2018.05)
  • 꼼꼼한 재은 씨의 스위프트 실전편 (Swift) (루비페이퍼, 이재은, 2018.08)
  • 꼼꼼한 재은 씨의 Swift 문법편 (루비페이퍼, 이재은, 2017.12)