🐱 With All My Animal 🐶
💡 [ 15일차 10/30일 ] 💡
📌 오늘의 기술면접 질문 Q&A
1) 클래스의 요건은 무엇일까요?
-
클래스는 객체 지향 프로그래밍에서 중요한 개념으로, 객체를 생성하기 위한 틀 또는 설계도로 생각할 수 있다.
-
클래스를 정의하는 것은 객체의 상태와 행동을 정의하는 것을 의미하며, 클래스를 통해 객체를 생성하는 과정을 인스턴스화라고 한다.
-
클래스를 정의하는데 다음과 같은 조건이 있다.
- 클래스 이름 : 각 클래스는 고유한 이름을 가져야한다. 이 이름은 해당 클래스의 인스턴스(즉, 객체)를 생성 할 때 사용된다.
- 속성 : 클래스는 객체의 상태를 정의하는 속성을 포함해야한다. 예시) '자동차' 클래스의 속성에는 브랜드/ 색상/ 모델 등이 있을 수 있다.
- 메소드 : 클래스는 객체의 행동을 정의하는 메소드를 포함해야한다. 예시) '자동차' 클래스의 메소드에는 달리기/ 멈추기/ 방향 전환하기 등이 있을 수 있다.
- 생성자 : 클래스는 객체 생성 시 초기화를 위한 특별한 메소드인 생성자를 가질 수 있다. 생성자는 클래스 이름과 동일하며, 객체가 생성될 때 한 번만 호출된다.
- 접근 제어자 : 클래스, 속성, 메소드는 접근 제어자를 가질 수 있다. 이는 해당 클래스, 속성, 메소드에 대한 접근권한을 제한한다. 예시) public, private, protected 등의 접근 제어자가 있다.
2) 안드로이드 service는 무엇인가요?
-
백그라운드에서 오랫동안 실행되어야 하는 작업을 수행하기 위한 애플리케이션 컴포넌트이다.
-
사용자 인터페이스를 제공하지 않으며, 대신 다른 애플리케이션 컴포넌트(Activity, 브로드캐스트 수신자 등)가 실행 중인 동안에도 백그라운드에서 작업을 계속 할 수 있게 해준다.
-
애플리케이션의 실행을 넘어서 백그라운드에서 장기간 실행되는 작업을 수행하기 때문에, 자원 관리 측면에서 주의가 필요하다.
-
불필요하게 서비스가 계속 실행되면 시스템의 성능을 저하시킬 수 있기 때문이다.
-
서비스를 사용할 때는 해당 작업이 완료되었을 때 서비스를 종료하는 등의 관리가 필요하다.
⛹️ 시작된 서비스 (Started Service)
-
애플리케이션 컴포넌트가 서비스를 시작하면, 서비스는 백그라운드에서 무한히 실행될 수있다.
-
예시) 음악 재생 앱에서 음악을 재생하는 서비스는 사용자가 앱을 종료하더라도 계속해서 음악을 재생할 수 있다.
⛹️ 바운드 서비스 (Bound Service)
-
다른 애플리케이션 컴포넌트가 서비스에 바인드하면, 바인드 된 컴포넌트와 상호작용하거나 통신할 수 있다.
-
바운드 서비스는 일반적으로 IPC(Inter-Process Communication)를 수행하는데 사용된다.
-
🔎 IPC : 서로 다른 프로세스 간에 데이터를 주고 받는 과정 혹은 그 방법을 의미한다.
안드로이드에서는 Intent를 사용하여 애플리케이션 컴포넌트 간에 메세지를 전달하는 방식도 제공하고 있다. Intent를 통해 IPC를 수행할 수도 있다.
📌 중간발표 피드백 정리
■ YH 튜터님
- 금액 숫자에 콤마 작업하기
- 영어모드가 왜 필요한지 모르겠다.
- 반려동물이 없어도 가입할 수 있으면 좋겠다.
- 일지를 쓸 때마다 포인트가 있었으면 좋겠다.
(프로반려인 등급 같은 게 있으면 좋을 것 같다!)
■ SJ 튜터님
- 주제가 겹치는 조와 같이 결합해서 하나의 서비스를 만들어보면 좋을 것 같다. (콜라보)
- 다크모드가 왜 있는지 모르겠다!
- 타임라인 정리를 잘했다.
- 한 사람이 만든 UI라고 생각이 들게 만들었다하고 시작했는데 그 점이 정말 중요하다.
- 코드도 일관성있게 작업하는 것도 중요하다.
- 변경점만 있는 업데이트(리스트 어댑터)할 수 있는 기능이 있다.
■ ES 매니저님
- 전반적으로 완성도 높게하려고 준비하신 것같다.
- 다른 사람들의 의견을 묻고 다닌 것도 정말 잘했다.
- 기능이 정말 쓰이는 걸까? 하는 생각을 해봤으면 좋겠다.(필요한건지)
- 발전이 많이 보였던 조였던 거 같다. (검색을 안했을 경우 Feed 어떻게 할지)
■ 전체 피드백(다른 조 포함해서)
- 로그인 기능이 굳이 많이 필요한가?
- 머티리얼 가이드 읽어보기
- UI/UX 다른 조 의견을 들어보는 것도 좋다. (서로 피드백 주기)
- 앱 실행 시 로그인 및 회원가입창이 바로 뜨는 게 좋은건지?
(마켓 앱은 홈 화면으로 바로 들어가게 됨)
📌 일부 화면 스크린샷 제한주기
window.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
- 이 kotlin 코드를 setContentView 전에만 넣어주면 완성!
참고한 블로그
😹