안드로개발자(채팅클라이언트)면접 예상 질문
TCP vs UDP
TCP
Connection-oriented protocol
연결지향형 신뢰성있는 데이터 전송 프로토콜
Syn ack로 핸드쉐이킹 후 연결후 통신
sync up 하는데 시간이 좀 걸리지만 신뢰성이 있음
쓰이는곳: 파일전송 HTTP,이메일 등
UDP
Connection-less protocol
혼잡제어를 하지않고 그냥 보낸다. 패킷손실이 발생할 수 있다.
순서가 보장되지 않음
쓰이는곳: DNS, 멀티미디어
헤더에 Checksum필드가 있어서 최소한의 오류검출은 함
자바 mutable, immutable 클래스
참조사이트:
http://hashcode.co.kr/questions/727/%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-immutable%EC%9D%B4-%EB%AD%94%EA%B0%80%EC%9A%94
mutable
일반 자바 클래스
immutable
한번 생성된 후 setter로 set할수없음, final로 내부 변수가 선언돼있음
string도 immutable임
종류
String, Boolean, Integer, Float, Long
여기서 주의할 점은 변경불가라는 것은 heap 영역에서의 변경불가라는 뜻입니다. String a="a"; a="b"; 와 같이 재할당은 가능합니다.
용도는?
Immutable을 쓰면, 멀티 쓰레드 환경에서 좀 더 신뢰할 수 있는 코드를 만들어 내기가 쉽습니다. 멀티 쓰레드 프로그램을 짜보셨다면 아시겠지만, 멀테 쓰레드 환경에서는 에러보다 비정상적 작동의 경우가 많습니다. 에러도 아니기 때문에 찾아내기도 어렵습니다. 게다가 항상 생기는 것도 아니고 백번에 한번 천번에 한번 식으로 문제가 생겨 정말 머리 아픈 경우가 한 두번이 아닙니다. Immutable을 쓰게 되면, 이런 요소들을 많이 줄일 수 있습니다.
프로세스 vs 스레드
프로세스는 운영체제로부터 자원을 할당받는 작업의 단위(주소공간, 파일, 메모리) PC, 프로그램카운터, 도 프로세스당 1개씩 관리
스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위(프로세스내의 자원을 공유하면서 실행한다)
프로세스생성시 스레드1개 기본생성하는데 이걸 메인스레드
그래서 스레드의 장점은
시스템 쓰루풋향상, 자원소모적음, 응답시간단축, easy to impl
프로세스간의 통신은 IPC라는 별도의 통신사용
쓰레드간의 통신은 전역변수 공유하면 된다
=>전역변수에 동기화 해야함
http://ralf79.tistory.com/34
어레이리스트 링크드리스트 차이 정리
벡터:
http://www.nextree.co.kr/p6506/
Set vs Map
http://j2yes.tistory.com/entry/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-list-set-map
Set은 중복방지를위한 자료구조고 equals로 판단
Map은 키벨류로??
TODO: Set, HashSet, Map, HashMap, LinkedHashSet등 개념 정리
http://blog.naver.com/PostView.nhn?blogId=dceye&logNo=50037083182
GC란?
자바는 할당된 메모리영역을 명시적으로 해제해주지 않는다.
참조를 잃어버린 영역은 GC가 JVM상의 앱실행을 모두 멈추고(stop the world) 메모리를 정리한다.
GC할떄의 힙영역
영제너레이션,올드제너레이션,JVM영역으로 나뉘고
영제너레이션영역
영개체들 이 모여있고 비교적 gc할일이 많아 가벼운 minor GC가 발생
올드제너레이션
오래된 개체들이 이동돼어 저장되는영역, 이 영역이 꽉 차게되면 Full GC(Major GC)가 발생
Perm영역(JVM영역)
Class,Method,Code 등이 저장되는 영역으로 JVM에서 사용됨
http://hackersstudy.tistory.com/14
Sorting 알고리즘 설명
Synchronized란?
동기화IO 비동기화IO란?
TCP
Connection-oriented protocol
연결지향형 신뢰성있는 데이터 전송 프로토콜
Syn ack로 핸드쉐이킹 후 연결후 통신
sync up 하는데 시간이 좀 걸리지만 신뢰성이 있음
쓰이는곳: 파일전송 HTTP,이메일 등
UDP
Connection-less protocol
혼잡제어를 하지않고 그냥 보낸다. 패킷손실이 발생할 수 있다.
순서가 보장되지 않음
쓰이는곳: DNS, 멀티미디어
헤더에 Checksum필드가 있어서 최소한의 오류검출은 함
자바 mutable, immutable 클래스
참조사이트:
http://hashcode.co.kr/questions/727/%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-immutable%EC%9D%B4-%EB%AD%94%EA%B0%80%EC%9A%94
class Mutable{
private int value;
public Mutable(int value) {
this.value = value;
}
getters and setters for values
}
class Immutable {
private final int value;
public Immutable(int value) {
this.value = value;
}
only getters
}
mutable
일반 자바 클래스
immutable
한번 생성된 후 setter로 set할수없음, final로 내부 변수가 선언돼있음
string도 immutable임
종류
String, Boolean, Integer, Float, Long
여기서 주의할 점은 변경불가라는 것은 heap 영역에서의 변경불가라는 뜻입니다. String a="a"; a="b"; 와 같이 재할당은 가능합니다.
용도는?
Immutable을 쓰면, 멀티 쓰레드 환경에서 좀 더 신뢰할 수 있는 코드를 만들어 내기가 쉽습니다. 멀티 쓰레드 프로그램을 짜보셨다면 아시겠지만, 멀테 쓰레드 환경에서는 에러보다 비정상적 작동의 경우가 많습니다. 에러도 아니기 때문에 찾아내기도 어렵습니다. 게다가 항상 생기는 것도 아니고 백번에 한번 천번에 한번 식으로 문제가 생겨 정말 머리 아픈 경우가 한 두번이 아닙니다. Immutable을 쓰게 되면, 이런 요소들을 많이 줄일 수 있습니다.
프로세스 vs 스레드
프로세스는 운영체제로부터 자원을 할당받는 작업의 단위(주소공간, 파일, 메모리) PC, 프로그램카운터, 도 프로세스당 1개씩 관리
스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위(프로세스내의 자원을 공유하면서 실행한다)
프로세스생성시 스레드1개 기본생성하는데 이걸 메인스레드
그래서 스레드의 장점은
시스템 쓰루풋향상, 자원소모적음, 응답시간단축, easy to impl
프로세스간의 통신은 IPC라는 별도의 통신사용
쓰레드간의 통신은 전역변수 공유하면 된다
=>전역변수에 동기화 해야함
http://ralf79.tistory.com/34
어레이리스트 링크드리스트 차이 정리
벡터:
http://www.nextree.co.kr/p6506/
Set vs Map
http://j2yes.tistory.com/entry/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-list-set-map
Set은 중복방지를위한 자료구조고 equals로 판단
Map은 키벨류로??
TODO: Set, HashSet, Map, HashMap, LinkedHashSet등 개념 정리
http://blog.naver.com/PostView.nhn?blogId=dceye&logNo=50037083182
GC란?
자바는 할당된 메모리영역을 명시적으로 해제해주지 않는다.
참조를 잃어버린 영역은 GC가 JVM상의 앱실행을 모두 멈추고(stop the world) 메모리를 정리한다.
GC할떄의 힙영역
영제너레이션,올드제너레이션,JVM영역으로 나뉘고
영제너레이션영역
영개체들 이 모여있고 비교적 gc할일이 많아 가벼운 minor GC가 발생
올드제너레이션
오래된 개체들이 이동돼어 저장되는영역, 이 영역이 꽉 차게되면 Full GC(Major GC)가 발생
Perm영역(JVM영역)
Class,Method,Code 등이 저장되는 영역으로 JVM에서 사용됨
http://hackersstudy.tistory.com/14
Sorting 알고리즘 설명
Synchronized란?
동기화IO 비동기화IO란?
댓글
댓글 쓰기