최종 팀프로젝트 TIL(25)

jxxn_a·2023년 11월 13일
0

팀프로젝트

목록 보기
29/33

🐱 With All My Animal 🐶

💡 [ 25일차 11/13일 ] 💡

📌 오늘의 기술면접 질문 Q&A

1) 디폴트 파라미터에 대해서 설명해주세요(장/단점)

⭐ 장점

- 함수 오버로딩을 줄여준다.
- 같은 이름의 함수를 여러 개 만들지 않고도 다양한 인자 조합으로 함수를 호출 할 수 있기 때문에 코드의 중복을 줄이고 가독성을 향상 시킬 수 있다.

- 유연성을 증가시킨다.
- 함수를 호출하는 쪽에서 필요한 인자만 제공하고 나머지 인자는 디폴트 값으로 사용할 수 있기 때문에 함수 호출이 더 유연해진다.

⭐ 단점

- 가독성을 저해할 수 있다.
- 함수 호출 시, 어떤 인자가 생략되었는지, 어떤 인자가 디폴트 값으로 사용되는지 명확하게 알기 어렵기 때문에 코드를 읽는 사람은 혼란스러울 수있다.

- 잘못된 디폴트 값이 사용될 수 있다.
- 디폴트 파라미터의 값이 잘못 설정되었을 경우, 예상치 못한 동작이나 버그를 발생시킬 수 있기 때문에 디폴트 파라미터의 값을 신중하게 설정하고 관리해야한다.

🚨 인자란?

fun add(a: Int, b: Int): Int {
    return a + b
}

fun main() {
    val result = add(3, 5)  // 3이랑 5가 인자
    println(result)
}

// 출력: 8

🚨 디폴트 파라미터의 예시

// 디폴트 파라미터를 가진 함수 선언
fun greet(name: String, greeting: String = "Hello") {
    println("$greeting, $name!")
}

fun main() {
    // 모든 파라미터에 값을 전달
    greet("Mina", "Hi") // 출력: "Hi, Mina!"

    // 디폴트 파라미터인 greeting에 값을 전달하지 못함
    greet("Mina") // 출력: "Hello, Mina!"
}

2) 안드로이드 앱에서 데이터 저장 방법에 대해 설명하세요

🌠 Shared Preferences

  • 간단한 키와 값을 쌍으로하여 데이터를 저장하는데 사용된다.
  • 사용자의 설정 정보나 간단한 데이터를 저장할 때 주로 사용된다.
  • 각 앱마다 독립적으로 저장되며, 다른 앱에서 접근 할 수 없다.
  • 사용자의 개인 정보와 같은 데이터를 저장하는데 적합하다.

🌠 Internal Storage

  • Android 시스템에서 앱 별로 할당되는 저장공간이다.
  • 각 앱은 자신의 Internal Storage 영역에 파일을 생성하고 사용할 수 있다.
  • 이 영역의 파일은 해당 앱에서만 접근이 가능하며,다른 앱이 접근 할 수 없는 영역에 데이터를 저장하는 방법이다.

🌠 External Storage

  • android 시스템에서 제공하는 추가적인 저장공간을 가르킨다. (내장메모리나 SD카드와 같은 물리적 저장소를 포함 할 수 있다.)
  • 공용 영역에 저장하여 다른 앱이 접근 할 수 있도록 하는 방법이다.
  • 사용자가 접근 할 수 있고 사진이나 음악처럼 크기가 크고 공유해야하는 데이터를 저장할 때 사용된다.

🌠 SQLite Database

  • 안드로이드에서 제공하는 경량 데이터베이스로 복잡한 구조를 가진 데이터를 저장하고 관리할 때 사용된다.
  • 서버가 필요없는 데이터베이스이다.
  • 파일 기반의 데이터베이스로 모든 데이터를 단일 파일에 저장한다.
  • 앱의 데이터를 구조적이고 효율적으로 저장할 수 있게 해주며, SQL문을 사용하여 데이터를 조작할 수 있다.

🌠 Firebase Realtime Database / FireStore

  • Firebase에서 제공하는 NoSQL 클라우드 데이터베이스이다.
  • 두 데이터 모두 실시간으로 데이터를 동기화하고 저장할 수 있다.
  • 오프라인에서도 앱이 작동하도록 지원한다.

📌 Firebase Realtime Database와 FireStore

1) Firebase Realtime Database

  • Firebase Realtime Database는 JSON 형태로 데이터를 저장하며, 모든 데이터는 싱글 트리에 저장된다.
  • 실시간으로 데이터를 동기화하므로 사용자는 항상 최신 상태의 데이터를 볼 수있다.
  • 오프라인에서도 앱이 작동하도록 지원하며, 다시 온라인 상태가 되면 데이터가 동기화된다.
  • 단점으로는 데이터 모델링과 복잡한 쿼리에 제한이 있고, 데이터가 크게 증가 할 경우 스케일링에 제한이 있다.

2) FireStore

  • Firebase Realtime Database의 단점을 해결하기 위한 새로운 데이터 베이스이다.
  • 데이터를 문서와 컬렉션으로 구조화하여 저장하고, 직관적인 데이터 모델링을 가능하게 한다.
  • 풍부한 쿼리 기능을 제공하며, 데이터베이스 스케일링이 더욱 용이하다.
  • 실시간 데이터 동기화 및 오프라인 지원기능을 가지고 있다.

🌠 DataStore

  • android Jetpack의 일부로 앱의 데이터를 안전하게 저장하는데 사용되는 새로운 데이터 저장 방법이다.
  • Shared Preferences의 대체제로 개발되었다.
  • Preferences DataStore와 Proto DataStore 두 가지 형태로 제공된다.
  • Flow를 사용하여 비동기적으로 데이터를 읽어오고 저장하며 메인 스레드에서 안전하게 데이터를 읽고 쓸 수 있도록 해준다.
  • 데이터의 일관성을 보장하며, 데이터를 읽고 쓰는 동안 데이터 충돌을 방지한다.
  • 네트워크 연결이 없는 상황에서도 잘 동작하며, 네트워크가 연결되면 변경사항이 동기화된다.
  • Shared Preferences에서 DataStore로 데이터를 쉽게 마이그레이션 할 수있다.

0개의 댓글