Study
-
Java Garbage Collection에 대하여Study/면접준비 2019. 8. 14. 19:10
면접 단골 질문이라서 공부 할 겸 정리해보자... 어려워..ㅜㅜ 간단히 말하면 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다. GC는 힙 영역에서 이루어진다. JVM은 메모리의 구역을 나누어 GC를 진행한다. 메모리 구역을 크게 Young Generation, Old Genertaion, Permanent Generation 으로 나눈다. Young 영역은 Eden, 두개의 Survivor Space로 구성되어있다. 새로운 객체가 할당되면 Eden 구역에 할당 된다. Eden 구역이 가득차면 쓰이지 않는 객체를 마킹하고 GC를 한다. 여기서 발생하는 GC는 minor GC라고 한다. 이후 살아남은 객체들은 첫번째 Survivor(s0)로 이동한다. Eden구역과 s..
-
Activity 생명주기Study/면접준비 2019. 8. 14. 18:54
1. onCreate() 액티비티가 처음 실행될 때 호출된다. 레이아웃을 구성한다. 초반에 번들 값은 null이지만 액티비티가 강제종료되었다가 다시 실행되는 겨우 번들에는 이전 상태의 정보가 저장되어 있어 복구할 수 있다. (onSaveInstanceState, onRestoreInstanceState) 2. onStart() 화면에 보이기 직전에 호출된다. 리소스를 설정한다.(BroadCastReciever 등록) 3. onResume() 화면이 포커스를 얻기 전 호출된다. 화면 갱신 처리 4. onPause() 포커스를 잃었을 때 호출 된다. (예: 팝업이 떠서 액티비티의 일부를 가렸을 때) 이 후 다시 포커스를 찾게 되면 onResume으로 돌아간다. 데이터 저장, 스레드 중지 등의 처리는 여기서 ..
-
안드로이드 4대 컴포넌트Study/면접준비 2019. 8. 14. 18:29
안드로이드엔 기본 컴포넌트 4개가 있으며 다음과 같다. 1. Acitivity (액티비티) 화면을 관리하며 사용자의 이벤트를 처리한다. 생명주기 메소드를 재정의 하여 기능을 구현한다. 2. Service (서비스) 화면이 존재하지 않는다. 백그라운드에서 동작한다. 한번 시작된 서비스는 어플리케이션이 종료되도 계속 백그라운드에서 동작한다. 3. Content Provider (컨텐츠 제공자) 데이터를 관리하고 앱 간 데이터 공유를 제공한다. 4. Broadcast Receiver (방송 수신자) 단말기 안에서 이루어지는 일들을 알려준다. 브로드캐스팅은 여러 객체에게 정보를 전달하는 것을 의미하는데 이 정보를 방송 수신자를 통해 받을 수 있다. 배터리 부족 같은 정보를 알려준다.
-
에라토스테네스의 체 ( 소수 판별)Study/알고리즘 2019. 2. 22. 17:11
음... 알고리즘 하다가 제일 슬플 때는 알고리즘이 틀렸을 때? 아니다. 수학적 사고가 부족해서 도저히 어떻게 풀어야 할지 감도 안 올 경우이다.. ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 에라토스테네스의 체 알고리즘은 굉장히 유명한 소수 판별법이다. 1. 소수란? 약수로 1과 자기 자신만 갖고 있는 수. ( 0과 1은 소수가 아니다)2 = { 1, 2}3 = { 1, 3}4 = { 1, 2, 4} 4는 소수가 아니다.5 = { 1, 5} 2. 에라토스테네스의 체 모든 자연수는 소수들의 곱으로 표현이 가능하다.그래서 소수가 아닌 수들은 어떤 소수의 배수이다. 위에서 처럼 4는 소수가 아니다. 소수인 2의 배수이기 때문이다. 이를 이용하여 체로 소수를 걸러보자. 1) boolean 자료형의 flag 배열을 만들..
-
스택 구현하기 (Stack)Study/알고리즘 2019. 2. 21. 18:07
스택... 이론은 아주 빠삭한 자료구조라고 생각했는데, 구현 하려니깐 내가 이론이 참 얕다는것을 깨달았다. 1. Stack이란? 쌓는다. 말그대로 박스가 쌓여 있는 모습같은 데이터 구조.먼저 들어간 데이터가 마지막에 꺼내지기 때문에 LIFO (Last In First Out) 구조라고 한다. 2. 구현 할 4가지 기능 pop() : 스택의 top 노드를 꺼낸다. 만약 스택이 비어있으면, EmptyStackException을 날린다.push() : 스택에 데이터를 집어 넣는다. 만약 스택의 사이즈보다 데이터를 더 집어 넣으면, StackOverFlowError() 를 날린다.peek() : 스택의 top노드의 데이터를 알려준다.isEmpty() : 스택이 비어있는지 확인한다. 3. 구현 1234567891..
-
퀵소트 (Quick Sort)Study/알고리즘 2019. 2. 19. 14:28
손코딩 단골 두번째 퀵소트를 공부해야한다.pivot과 비교해서 얠 기준으로 왼쪽은 작은 값, 오른쪽은 큰 값으로 정렬한다.평균 시간 복잡도는 O(n log n) 이다. 정렬 되지 않은 배열 3, 9, 4, 7, 5, 0, 1, 6, 8, 2 로 정렬을 해봅시다. 1. pivot을 정한다. 보통 배열의 가운데 값을 선택한다. pivot = 5; 2. 배열의 왼쪽과 오른쪽 끝의 인덱스를 start, end로 둔다. start = 0, end = arr.lenth -1; 3. start 인덱스의 배열 값이 pivot보다 작으면 다음 인덱스로 넘어간다. arr[start] = 3 , pivot = 5, start++; 4. start 인덱스의 배열값이 pivot 보다 크면 멈춘다. arr[start] = 9, ..
-
피보나치 수열Study/알고리즘 2019. 2. 17. 20:49
면접 중 손코딩 단골 피보나치 수열 피보나치 수열은 a1=1, a2=1, an+2=an+1+an (n=1, 2, 3, ⋯) 라는 규칙을 갖는다. 1 1 2 3 5 8 13 21 34 55 … 이 수열을 재귀, 메모이제이션, 반복문으로 나타내보자 피보나치 수열을 푸는 방법 1 - 재귀 public static void main(String[] args) {// TODO Auto-generated method stubint input = 8;for (int i = 1; i