본문 바로가기

분류 전체보기236

[안드로이드 면접] - 3 : 1. 트랜잭션이란? 더보기 데이터베이스의 상태를 변화(SELECT, INSERT, DELETE, UPDATE)시키는 하나의 논리적인 작업 단위이다. 하나의 트랜잭션 안에서 여러 개의 연산이 수행될 수도 있다. 또한, 트랜잭션은 수행중에 한 작업이라도 실패하면 전부 실패하고, 모두 성공해야 성공이라고 할 수 있다. 2. ACID 란 무엇인가? 더보기 동시성 프로그램 또는 그러한 프로그램에서 데이터에 대한 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 특징이다. 그 특징 네 개를 일컫는 게 ACID 이다. [Atomicity, Consistency, Isolation, Durability] Atomicity : 트랜잭션의 연산은 모든 연산이 완벽히 수행되어야 하며, 한 연산이라도 실패하면 트랜잭션이 실패.. 2023. 1. 26.
[안드로이드] - ConstraintLayout 을 왜쓸까? ConstraintLayout ? 2016년 Google IO 에 공개된 레이아웃 에디터에 상호연관 시키기 위해 도입된 Layout 이다. 'constraint' 라는 단어 의미대로 제약조건을 걸어 View 들을 배치하는 역할을 하는 Layout 이다. 정말 다양한 제약조건이 있다. 이 부분은 android developer 를 참고하여 자세히 알아보자. 왜 ConstraintLayout 을 사용하라고 할까? 뷰 Layout 작업을 할 때 컨스트레인트 레이아웃을 주로 사용하라는 다른 글을 많이 보았다. 퍼포먼스 측면에서 좋다는 글을 봐서 개발할 때 늘 그렇게 개발했다. 하지만 여기서 그 왜? 라는 의문을 갖고 글을 적어보려한다. 그 이전에 우리는 개발자로써 Layout 작업을 하기 이전에 Renderin.. 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.
[안드로이드 면접] - 1 1. OOM Killer 란? 더보기 Out of Memory Killer 의 약자로 메모리가 부족할 경우, 특정 프로세스를 강제 종료시킨다. 즉, OOM 이 발생하지 않도록 적은 프로세스를 죽여 많은 메모리를 확보하는 heuristic 에 기반한다. 그리고 OOM 상황이 발생하지 않도록 노력하는 것이 중요하여 안드로이드에서는 별도의 LMK 를 사용하고 있다. 2. OOM 발생원인은? 더보기 커널은 가상 메모리를 이용한 메모리를 할당하므로 실제 가용한 물리적 메모리보다 큰 프로그램 메모리를 할당할 수 있다. 즉, 프로그램에서 당장 사용하지 않는 메모리는 나중에 할당하기 때문에 실제로 사용 가능한 메모리를 초과한 프로세스가 load 될 수 있게 된다. 이것이 overcommit 이라 부르는데, 메모리가 실.. 2023. 1. 24.
[안드로이드 면접준비] - 0 : 하루에 하나 One a day 하루에 하나, 오늘부터 하루에 한 번 면접 관련 내용을 블로그에 업로드할 예정이다. 하루종일 개발을 하다보면 엄청 많은 정보가 내 머릿속에 들어갔다 나가지만 정작 기억에 남는게 없다.. 이해만하고 적용을 하다보니 내 머릿속에 잠깐 지식이 앉았다가 나가는 기분이다. 그러다보니 내가 이해한 내용을 설명하고 정리하기가 어렵다. 그래서, One a day (하루에 하나) 를 실천해볼 생각이다. 안드로이드 면접 블로그 내용을 내가 알고 있던 지식, 이해한 부분과, 여타 다른 블로그 글을 읽고 참고해서 글을 작성할 예정이다. 하루에 3~5개씩 정리할 예정이다. 주제는 CS[운영체제, 네트워크, 알고리즘, 자료구조], Android[디자인패턴, 아키텍처, Jetpack, 기본]를 다룰 생각이다. 기.. 2023. 1. 21.
[안드로이드] - Flow (coroutine) - 0 안드로이드에서 비동기 처리를 위해서 코루틴을 사용한다. 우리는 개발 시, LiveData 대신하여 Flow 를 사용할 수 있다. 하지만, Flow 는 스스로 라이프사이클을 알지 못하기 때문에 CoroutineScope 를 잘 이해하고 사용하여 불필요한 메모리 사용을 방지해야 한다. LiveData VS Flow LiveData 는 UI 에 밀접하게 연관되어 있기 때문에 Data Layer 에서 비동기 방식으로 데이터를 처리하기에 자연스러운 방법이 없다. 또한 LiveData 는 안드로이드 플랫폼에 속해 있기 때문에 순수 Java / Kotlin 을 사용해야 하는 Domain Layer 에서 사용하기에 적합하지 않다. 반면 Flow 는 스스로 안드로이드 생명주기에 대해 알지 못하여, 라이프사이클에 따른 중.. 2023. 1. 18.
[안드로이드] - coroutine (코루틴) - 0 코루틴을 알기 위하여, 프로그램 실행을 훑기 보통, 프로그램이 실행되는 과정을 한 번 정리를 해보자. 프로그램이 실행이 되면, 실행된 코드가 메모리에 load 가 된다. load 된 인스턴스를 프로세스라고 일컫는다. 프로세스는 여러 개의 독립된 실행의 흐름을 갖게 된다. 이 실행 흐름 하나하나를 Thread 라고 한다. 프로세스는 자기가 사용하기 위해 메모리를 할당 받는다. 그걸 Heap 이라 한다. 프로세스 안에서 돌아가는 각 각의 Thread 가 존재하는데, 그 스레드 메모리를 Stack 이라 부른다. 또한, 스레드는 프로세스 안에 있는 Heap 안 자원을 각 Thread 끼리 공유할 수 있다. 여기서 코루틴은 Thread Stack 을 할당을 받지 않고, 프로세스에 할당된 Heap memory 를 .. 2023. 1. 18.
[안드로이드] - coroutine (코루틴) - 1 코루틴 코루틴은 루틴의 일종이다. co + routine 으로 협동하는 루틴이라고 한다. 코루틴은 이전에 자신의 실행이 마지막으로 중단되었던 지점에 그 다음 장소에서 실행을 재개한다. 진입점과 출구점이 여러 개 특징을 가지고 있고, 입구점과 출구점이 하나는 서브루틴이라고 한다. 코루틴은 비동기 실행을 간단한 코드로 처리할 수 있고, 메인 스레드가 블로킹되는 그러한 상태를 관리할 수 있게 도움을 준다. 또한, 코루틴은 비동기 프로그래밍을 하기 위해 콜백로 처리하는 걸, 순차적으로 짤 수 있게 해주는 장점이 있다. 비동기 처리를 순차적으로 처리할 수 있게라는 말이 간단하는 말이다. 구글 I/O 발표 내용 서버를 한 번 호출하고, 서버에서 온 데이터(user)를 텍스트에 넣어주는 코드를 드림코드라고 불린다. .. 2023. 1. 18.