본문 바로가기

Android Q&A/Android One a day26

[안드로이드 면접] - 9 : 1. 안드로이드 MVC 패턴이란? 더보기 M-model / V-view / C-controller 로 구조를 나눠서 개발을 할수 있는 아키텍처 패턴을 말한다. 해당 패턴을 이용하여 파일 구조를 나누는 이유는 개발자들끼리 협업하는 용이해지고, 유지보수와 확장성에 효율적이다. 그렇지만 흔히 알고있는 MVC 패턴은 안드로이드에 적용할 수 없다. 안드로이드는 내부 API 에 종속적이라 웹과는 살짝 다른 형태를 갖고 있다. MVC 패턴 Flow 1. 뷰(액티비티/프래그먼트)로부터 사용자 이벤트 발생 2. 모델로부터 데이터 갱신이 필요한지 확인 3. 모델로부터 전달받은 데이터를 통해 뷰를 갱신여부 판단 4. 뷰에서 UI 갱신처리 장점 - 직관적이다. - 구현하기 쉽다. - 모델과 뷰가 분리되어 모델 재활용이 가능하.. 2023. 2. 1.
[안드로이드 면접] - 8 : 1. recyclerView 와 listView 차이는? 더보기 listView 는 recyclerView 에 유연성 있는 view를 만들기 위해선 recyclerview 에 비해서 뷰 커스텀 작업에 대한 유연성이 떨어지는 단점이 있다. 또한, listView 는 view 를 그릴 때마다 findViewById() 를 호출하기 때문에 성능 저하 문제가 발생한다. 이 점을 ViewHolder 패턴으로 해결할 수 있지만, recyclerview 는 이 부분을 강제하지만, listview 는 강제하지 않아 일일이 ViewHolder 생성코드를 직접 작업해줘야 하고 자칫 깜빡하는 경우가 빈번히 발생한다. 고로 이 부분이 상대적으로 단점이 된다. 💡유연성 있는 view 란? item layout 을 다양하게 적용.. 2023. 1. 31.
[안드로이드 면접] - 7 : 1. lateinit, lazy 를 사용하는 이유는? 더보기 보통 클래스에서 변수를 초기화하면 클래스 생성 시 해당 변수도 함께 생성되며 초기화 된다. 그렇게되면 클래스 객체를 생성할 때마다 해당 변수도 함께 초기화되니, 바로 사용할 수 있는 장점이 있다. 하지만, 해당 변수를 바로 사용하지 않거나 꼭 사용하는 경우가 아니라면 오히려 클래스 생성마다 해당 변수를 만들고 초기화 하는 것이 시간과, 메모리 낭비가 된다. 또한, 전역 변수를 선언하기 위해 굳이 null 처리를 해야하는 경우가 있다. 2. Android 와 AndroidX 차이는? 더보기 AndroidX 는 Jetpack 내에 라이브러리를 개발, 테스트, 패키지화, 버전 및 릴리즈를 하기 위해 사용하는 오픈소스 프로젝트이다. 기존 Android.. 2023. 1. 30.
[안드로이드 면접] - 6 : 1. 왜 언어를 코틀린으로 선택했을까? 더보기 결론적으로 자바와 호환도 잘되면서 실용적이고 간결하며 안전한 언어이기 때문이다. 또한, 자바 플랫폼에서 돌아가기 때문에 기존 자바 라이브러리나 프레임워크에서 잘 동작하며 성능도 자바와 같은 수준이기 때문에 대체하여 좋은 이점을 더 갖은 상태로 개발할 수 있다. 그러한 이유는 코틀린이 갖는 언어적 특징 때문이다. 코틀린 특징 정적 타입 지정언어 : 컴파일 시점에서 객체 타입이 결정된다. 이를 정적 타입이라고 일컫는다. 이와 반대로 런타임 시점에서 객체 타입이 결정되는 동적타입은 파이썬, 자바스크립트가 존재한다. Null 안정성 : Java 는 NullPointer Exception 을 많이 경험했을 것이다. 이 점을 개선하여 Nullable 과 non-null.. 2023. 1. 29.
[안드로이드 면접] - 5: 1. Activity 클래스의 onSaveInstanceState(), onRestoreInstanceState() 메소드의 역할은 무엇인가? onSaveInstanceState() 더보기 해당 메소드는 Activity 가 onPause 되기 전에 데이터를 저장하게 된다. onRestoreInstanceState() 더보기 Activity 가 파괴되고 다시 재생성될 때, Activity 가 가지고 있는 Bundle 로부터 데이터를 회복할 수 있다. 또한 onCreate() 와 onRestoreInstanceState() 콜백 메서드는 같은 번들 객체를 전달 받는다. 그래서 보통은 데이터를 회복하는 코드를 onRestoreInstanceState() 에 많이 작성하는 편이다. onCreate() 에서 sa.. 2023. 1. 28.
[안드로이드 면접] - 4 : 1. 조인(join)의 역할은 무엇인가? 조인이란? 더보기 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것을 말한다. 조인의 역할이란? 더보기 테이블을 데이터 용량 낭비를 줄이고 데이터 관리하기 편하기 위해 테이블을 분리를 하는데, 이로써 얻는 단점인 데이터가 보기 힘들다는 부분을 여러 테이블의 데이터가 조합된 읽기 편하게 만들기 위함이다. 다양한 Join 방식 더보기 INNER JOIN : 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. OUTER JOIN : 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다. CROSS JOIN : 한 쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능이다. SELF JOIN : 자.. 2023. 1. 27.
[안드로이드 면접] - 3 : 1. 트랜잭션이란? 더보기 데이터베이스의 상태를 변화(SELECT, INSERT, DELETE, UPDATE)시키는 하나의 논리적인 작업 단위이다. 하나의 트랜잭션 안에서 여러 개의 연산이 수행될 수도 있다. 또한, 트랜잭션은 수행중에 한 작업이라도 실패하면 전부 실패하고, 모두 성공해야 성공이라고 할 수 있다. 2. ACID 란 무엇인가? 더보기 동시성 프로그램 또는 그러한 프로그램에서 데이터에 대한 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 특징이다. 그 특징 네 개를 일컫는 게 ACID 이다. [Atomicity, Consistency, Isolation, Durability] Atomicity : 트랜잭션의 연산은 모든 연산이 완벽히 수행되어야 하며, 한 연산이라도 실패하면 트랜잭션이 실패.. 2023. 1. 26.
[안드로이드 면접] - 2 : 1. Http VS Https 더보기 둘 다 인터넷을 이용하는 프로토콜이다. Hypertext transfer protocol 의 약자로 웹 서버와 사용자의 인터넷 브라우저 사이에서 문서를 전송하기 위한 통신규약이다. 둘이 비슷하지만 한 가지 다른 점은 https 가 모든 통신 내용을 암호화 한다는 점이다. 끝에 's' 가 붙은 건, secure socket 을 의미한다. 안전한 통신망이라는 뜻이다. 패킷이 암호화 되어 있기 때문에 패킷 캡쳐 프로그램으로 캡쳐를 하여도 암호화된 내용만 보인다. 암호화는 TLS 라고 하여 Transport 계층에서 이루어지고, L4 의 전송계층에서 암화가 이루어진다. TLS란? Transport Layer Security 의 줄임말로 과거 SSL 에서 발전하며 이름이 변경.. 2023. 1. 25.