분류 전체보기 178

개발자 면접 질문 - 가비지 컬렉션 정의

1. 가비지 컬렉션(Garbage Collection) - 쓰레기(가비지)를 정리해주는 프로그램 - 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블록이나 객체를 찾아 자동적으로 다시 사용 가능한 자원으로 회수 2. 가비지 컬렉션 실행시점 - JVM이 메모리가 부족해지면 OS에 추가로 메모리 요청을 할 때 가비지 컬렉션이 실행된다. 3. 가비지 컬렉션 알고리즘 - 마킹 작업 : 사용중인 메모리와 사용하지 않는 메모리 식별 - 일반 삭제 : 참조되지 않는 객체를 제거하고 빈 공간에 대한 포인터를 남긴다. 4. 가비지 컬렉터(Garbage Collector) 종류 - Serial GC : MinorGC, MajorGC를 순차적으로 진행 - Parallel GC : 여러 CPU를 효과적으로 활용하기 위..

면접 - 자바 2020.12.02

개발자 면접 질문 - vector와 list의 차이

1. vector - 연속적인 메모리 - 미래에 저장할 요소를 위해 메모리를 선할당 한다. - 요소 저장 공간은 요소 타입 만큼 필요하다. - 멀티 쓰레드 환경을 지원한다. - 요소 추가가 빈번할 때 효율적이다. - 요소 추가시 메모리 재할당을 해야 한다. - 요소 제거시 iterator 가 무효화 된다. 2. list - 비연속적인 메모리 - 미래에 저장할 요소를 위해 메모리를 선할당 하지 않는다. - 요소 저장 공간은 요소 타입 + 포인트 저장 공간이 필요하다. - 멀티 쓰레드 환경을 지원하지 않는다. - 요소 추가시 메모리 재할당을 하지 않는다. - 요소 제거시 iterator 가 유효하다.

면접 - 자바 2020.12.02

개발자 면접 질문 - Restful 정의

1. Restful - 리소스(url), 메서드(http method), 메세지 3가지 요소로 구성된다. - post : create - get : select - put : update - delete : delete - 특정 언어나 기술에 종속받지 않고 http와 json을 사용할 수 있는 모든 플랫폼에서 사용가능하다 - 무상태성 : http session과 같은 컨텍스트 저장소에 상태 정보를 저장하지 않으므로 구현이 단순해진다. - http 프로토콜 기반의 로드 밸런싱이나 ssl, 캐쉬 기능을 적용할 수 있다.

면접 - 자바 2020.12.02

개발자 면접 질문 - 쓰레드 정의

1. 쓰레드 - 쓰레드는 프로세스 내에서 실행되는 흐름의 단위를 말한다. 2. 멀티 쓰레드 - 하나의 프로세스에서 둘 이상의 쓰레드를 동시에 실행할 수 있는 것을 말한다. - 스케쥴러에 의해 각 쓰레드에게 시간을 할당하여 실행함으로써 여러 쓰레드가 동시에 실행되는 것 처럼 보인다. 3. 특징 - 각 쓰레드는 독립적인 Stack(스택) 영역 갖는다. - 메서드 영역과 힙 영역을 공유한다. - 같은 프로세스 내의 쓰레드들은 스택 이외의 모든 것을 공유한다. - JVM이 운영체제 역할을 한다. - 자바 쓰레드는 JVM에 의해 스케줄되는 실행 단위 코드 블록이다. - 자바에서 쓰레드 스케줄링은 JVM이 관리한다. 4. 구현 방식 - Thread 클래스를 상속 - Runnable 인터페이스를 구현

면접 - 자바 2020.12.02

자바 파일 업로드 NIO 방식 처리

파일 업로드는 보통 IO방식으로 처리하는데 경우에 따라서 NIO방식을 사용하는 경우가 있다. Nio 방식은 채널방식으로 양방향 입출력이 가능하고 복수 개 단위의 버퍼를 사용해서 입출력 속도가 빠르다. private static void useNormalIO() throws Exception { File file = new File("/home/developer/test.iso"); File oFile = new File("/home/developer/test2"); long time1 = System.currentTimeMillis(); InputStream is = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(oFile)..

개발 2020.11.29

concurrentmodificationException 해결방법

concurrentmodificationException 은 iterator가 돌고 있을 때 데이터 변경이 일어나면서 발생한다. 다음과 같은 코드에서 이 오류가 발생한다. for (IssueUser issueUser : user.getIssueUsers()) { user.removeIssue(issueUser.getIssue()); } public void removeIssue(Issue issue) { Iterator iterator = this.issueUsers.iterator(); while (iterator.hasNext()) { IssueUser issueUser = iterator.next(); if (issue.getId().equals(issueUser.getIssue().getId())..

개발 2020.11.29

index.html 이 {}으로 표시될때

스프링 프레임워크를 처음 설정할 때 index페이지에 접근해도 {}으로 표시되어 당황할 수 있다. 이런 현상이 발생한 이유는 뷰 설정이 프레임워크에 없기 때문에 발생한다. 설정 클래스에 뷰 설정을 추가하면 정상적으로 index 페이지가 표시된다. @Bean public ViewResolver viewResolver() { // jsp를 처리하는 viewResolver InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setOrder(1); viewResolver.setPrefix(VIEW_RESOLVER_PREFIX); viewResolver.setSuffix(VIEW_RESOLVER_SU..

개발 2020.11.29