안드로이드의 4대 컴포넌트에 대해서 설명해보세요.

안드로이드의 4대 컴포넌트로는 액티비티, 서비스, 브로드케스트리시버, 콘텐트  프로바이더

엑티비티 안드로이드에서 화면을 관리하고 사용자의 다양한 이벤트 처리하는데 사용

서비스는 화면에서 보이지 않지만 특정한 기능을 백그라운드에서 처리

브로드캐스트 서버는 안드로이드에서 발생하는 특정 브로드캐스트 메세지를 처리하기 위한 컴포넌트

 

 

[Android] 안드로이드 Context란?

 

안드로이드의 엑티비티와 엑티비티의 수명주기에 대해서 설명해보세요.

2020/11/28 - [개인공부/*기술면접 대비] - [안드로이드] 생명주기 (LifeCycle)

 

[안드로이드] 생명주기 (LifeCycle)

OnCreate() 생성자랑 비슷하며 액티비가 처음 생성됨 OnStart() 시작되기 직전상태 OnCreate()와 OnResume()사이의 순서 OnResume() OnStart()와 비슷하지만 이제 액티비가 뜨고 동작하기 완전 직전 상태 OnPause..

wantairpod.tistory.com

 

안드로이드의 메니페이스 파일에 대해서 설명해보세요.

매니페이스 파일은 앱의 이름, 버전, 구성요소, 권한 등 앱의 실행에서 꼭 필요한 정보가 저장 되어 있는 파일

xml파일로 프로젝트의 최상위에 존재

태그 구성으로 가장위는 manifest 태그가 존재하고 패키지명, 버전 등이 기제됩니다.

application 태그에는 앱 아이콘, 앱 이름등의 정보가 저장됩니다.

activity태그에는 액티비티 클래스명과 액티비티 이름을 정의합니다.

acitivty 하위에는 intent-filter 태그를 이용하여 액티비티에 대한 인텐트 작업시 필요한 action과 category를 정의

 

 

RxJava란 ?

일단 RxJava는 Reactive Programming을 기반으로 한 언어이다.

즉 Reactive Extension의 JVM버전이다.

비동기 데이터 처리를 효율적으로 할 수 있는 장점이 있다.

반응형 프로그래밍

for if while과 같은 것이 아니라 sql 쿼리 같은 선언형으로 구성됩니다.

또 함수를 단지 호출하는 대상이 아니라 변수로도, 혹은 인자로도 넘길 수 있습니다.

이러한 함수형 언어의 도구들을 자유롭게 활용해야 합니다. (java8의 람다표현식)

1) 반응형 프고르맹은 명령형 프로그래밍의 반대말이다.

명령형 프로그래밍이란... 우리가 지금까지 해온 C/C++, Java라고 생각하면 됩니다. 변수, for, while, if등의 제어문을 사용합니다.

그 반대로 반응형 프로그래밍이란 선언형(declarative) 프로그래밍입니다. 대표적인 예로 SQL이 있습니다.

반응형 프로그래밍은 선언형 프로그래밍을 지향합니다.

 

2) 반응형 프로그램밍은 함수형 프로그래밍을 활용한다.

함수형 언어는 함수를 단지 호출하는 대상이 아닌 변수로도 할 수 있고 인자로도 넘길 수 있고 마음대로 할 수 있다.

반응형 프로그래밍은 함수형 언어 도구들을 자유자재로 활용해야 합니다. 예를 들어 Java8에 도입된 람다 표현식은 반드시 알아야한다.

 

3) 반응형 프로그래밍은 함수형 프로그래밍 언어의 도구들을 가지고 데이터 흐름을 Composable 하게 구현하는 것입니다.

 

 

Java/Kotlin 차이

Java의 특징

  • 멀티 플랫폼
    • 크로스 플랫폼이라고도 불리는데 JVM(Java Virtual Machine)만 설치되어 있으면 어떤 운영체제에서도 애플리케이션을 작동시킬 수 있습니다.
  • 메모리 관리
    • 자바는 포인터 개념이 없고 자동으로 메모리를 관리합니다.
    • Garbage Collector 가 사용하지 않는 자원을 자동으로 반환해줍니다.
    • 프로그래밍이 편해집니다.
  • OOP (Object Oriented Programing)
    • 부품들을 조립해서 하나의 제품을 만드는 것과 같은 원리입니다.
    • 객체(Object)라는 단위로 나누고 객체들끼리 상호작용하는 방식입니다.
  • 멀티 스레드
    • Thread 클래스와 Runnable 인터페이스를 이용하여 멀티 스레드를 구현합니다.
  • 동적 로딩
    • 필요한 시점에 구현한 클래스를 로딩할 수 있습니다.

코틀린 특징

개발자의 편의성, 간결하고 효율적인 코드 작성, 객체지향 프로그래밍과 함수형 프로그래밍의 장점을 절묘하게 조화시킨 언어
 

코틀린은 jvm의 바이트 코드로 실행되고 자바와 100% 호환되므로 뿌리부터 완전히 다른 새로운 개념의 언어는 아닙니다. 따라서 모든 특징을 설명하기보단 자바와 비교해가며 특징을 보도록 하겠습니다.

  • Type Inference
    • 할당되는 리터럴 값을 알아서 추론해줍니다.
  • OOP 와 FP (Functional Programing)
    • 객체지향 프로그래밍, 함수형 프로그래밍을 모두 지원합니다.
    • 코틀린에서 함수는 일급 객체입니다.
    • 고차 함수로 사용이 가능합니다.
  • 모든 타입이 클래스 타입
    • 기본형 타입마저 클래스로 존재합니다. (Nullable 위해)
  • Nullable
    • Null 할당이 가능한 타입을 선언할 수 있습니다.
    • NPE 예외를 컴파일 시점에서 미리 방지할 수 있습니다.

안드로이드 개발에서 차이

안드로이드를 개발할 땐 객체지향 언어처럼 클래스 내에서 로직을 작성해야 합니다.

여전히 자바와 코틀린을 동시에 지원하므로 자바의 형식에 맞춰서 코틀린을 사용해야 합니다.

하지만 자바로 작성했을 때보다는 코틀린 코드의 양이 훨씬 줄어들고 간결해지므로 개발자의 편의성이 훨씬 좋습니다.

 

일례로 Java에선 변수에 대한 get/set 함수를 만들어주고 생성자를 만들어 변수를 초기화하는 작업을 수행해야함.(수 십줄) 하지만 코틀린은 data class를 만들어 정의해주면 코드량이 엄청나게 간결해진다. (5줄이내) 아무래도 나중에 나온 언어다 보니 Java의 좋은 점+a 라고 생각하면된다.

 

함수형 프로그래밍

함수형 프로그래밍은 이름처럼 함수를 기반으로 돌아가는 프로그램(=JavaScript)

함수형 프로그래밍은 몇 가지 원칙이 있습니다.

  • 입출력이 순수해야합니다. (순수함수)
    • 하나 이상의 인자를 받고, 받은 인자를 처리하여 반드시 결과물을 돌려주어야 한다.
    •  
  • 부작용(부산물)이 없어야합니다.
  • 함수와 데이터를 중점으로 생각합니다.
  •  
//보통의 반복문 생성
var sum = 0;
for (var i = 1; i <= 10; i++) 
{
  sum += i;
}

//함수형 프로그래밍
function add(sum, count) 
{
  sum += count;
  if (count > 0) 
  {
    return add(sum, count - 1);
  } else 
  {
    return sum;
  }
}
add(0, 10); // 55

+ Recent posts