본문 바로가기

신입 개발자 면접 기초

(31)
JVM 구조와 자바 런타임 메모리 구조 (자바 애플리케이션이 실행될 때 JVM에서 일어나는 일, 과정을 설명해줄 수 있나요?) JVM(Java Virtual Machine) : 자바 가상 머신으로 자바 바이트 코드를 실행할 수 있는 주체다.CPU나 운영체제(플랫폼)의 종류와 무관하게 실행이 가능하다.즉, 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실행시켜주는 역할을 한다.JVM의 구성을 살펴보면 크게 4가지(Class Loader, Execution Engine, Garbage Collector, Runtime Data Area)로 나뉜다.1. Class Loader자바에서 소스를 작성하면 Person.java 처럼 .java파일이 생성된다. .java 소스를 자바컴파일러가 컴파일하면 Person.class 같은 .class파일(바이트코드)이 생성..
공공데이터포털 OPEN API 사용하는 방법 (API키 발급 과정부터 개발 문서 확인, 자바코드로 Response 받아보기까지 example) OPEN API 사용하는 방법 (OPEN API 사용해본적 있나요?) 공공데이터 포털에서 제공하는 OPEN API 사용하는 방법에 대해서 간단히 공부해보았다.(원래는 자바에서 XML 파싱 라이브러리를 테스트해보려고 적당한 XML 파일을 찾다가 OPEN API가 JSON 형식 말고도 XML형식으로 제공한다는 것이 생각나서 테스트해봤다.)신입 개발자로 취업할 때 가끔씩 OPEN API 사용 경험을 물어보는 곳도 있었다.이미 많은 신입 개발자들이 포트폴리오를 만들면서 어떤 프로젝트에서는 OPEN API를 사용해봤을거라 생각되지만 정리하는 겸, 사용해보지 않은 분들도 가볍게 경험할 겸해서 OPEN API를 사용하는 방법에 대해 정리한다.(2020.06.03 - 페이지 화면도 많이 바뀌었지만 검색창이나 신청버튼 ..
Java 성능 좋은 분기문을 쓰는 방법, if문에서 연산 순서 (if문에서 좋은 퍼포먼스를 만들기, && || 연산자 우선 순위) Java에서 좋은 if문 코드를 작성하는 방법 코드 분석을 하다가 우연히 if문의 '||' 연산자와 '&&' 연산자를 보면서 최적화에 대해 생각해보게 되었다.여러 참고 사이트를 보면서 나름대로 정리를 하게되었다.신입 개발자들도 한 번 정도 고려하면서 코딩을 하면 좋을 듯 하다.먼저, 좋은 if문 코드를 작성하기에 앞서서 자바 연산자 우선 순위를 알고 있어야 한다. 결합 방향에 대해서는 최신 자바 기준으로 정확하지 않을 수 있으므로 우선 순위만 참고하면 된다.다양한 프로그래밍 언어들에서 연산자 우선 순위가 비슷하다보니 한 번 보고 넘기는 경우가 많은데 다시 한 번 상기시킬 필요가 있다.||, && 연산자 우선 순위와 단축 평..
DB 인덱스의 구조는 어떻게 되어있나요? 인덱스는 언제 적용해야하나요? 데이터베이스 인덱스(Database Index) 데이터베이스의 인덱스, 개발을 하면서 상당히 많이 들었다.RDBMS에서 대용량의 데이터(레코드)가 있을 때, 특정 데이터를 검색하기 위해서 테이블의 레코드를 full scan하는 것이 아니라, 인덱스가 적용된 컬럼의 테이블(컬럼, 인덱스주소)을 따로 파일로 저장해놓고 그것을 검색해서 검색 효율을 높이는 방법이다.1234SELECT /*+INDEX(EMP EMPNO_INDEX) */EMPNO, ENAMEFROM EMPWHERE DEPTNO=10 /*+HINT~~~~ */ 이런식으로 사용하는 것까지는 누구나 안다. (HINT의 종류는 검색해보면 많음)그러나 '왜 이렇게 일어나지?', '어떻게 동작하지?' 이런 고민을 해보지 않고 + 직접 '체득'하지 않은 사람..
제네릭(Generic)에 대한 모든 것(제네릭에 대해서 설명해주세요) 제네릭(Generic) 제네릭 타입을 이용해서 컴파일 과정에서 타입 체크를 할 수 있다.제네릭은 클래스와 인터페이스, 메소드를 정의할 때 타입 파라미터로 사용한다.* 제네릭을 사용하는 이유(=장점)1. 컴파일할 때 타입을 체크해서 에러를 사전에 잡을 수 있다.2. 컴파일러가 타입캐스팅을 해주기 때문에 개발자가 편리하다.3. 타입만 다르고 코드의 내용이 대부분 일치할 때, 코드의 재사용성이 좋아진다.123public class className{...} public interface interfaceName{...} * 클래스, 인터페이스에서 제네릭 타입파라미터 사용법- 실제 사용할 시에는 타입 파라미터에 구체적인 타입을 지정해야 함.1ArrayList list = new ArrayList(); Array..
OAuth2.0 구조와 동작 프로세스(feat. 생활코딩) OAuth 2.0 구조와 동작 프로세스 * OAuthOpenID로 개발된 표준 인증 방식, API인증과 사용자인증에 사용된다.* OAuth를 사용하는 이유보안의 수준을 알 수 없는 애플리케이션에서 일일이 계정을 만들어 사용하면 ID/PW관리가 어렵고 개인정보가 유출되면 연쇄적으로 피해가 심각해질 수 있기 때문에 보안의 수준이 어느정도 검증된 사이트(OAuth provider(ex. google, facebook))의 API를 이용해서 인증을 받는 방법(OAuth)이 보안상 좋기 때문이다.* 참고로 비영리사이트 생활코딩(https://opentutorials.org)의 동영상을 보고 공부한 후 정리한 것임. 그림과 내용을 출처 역시 생활코딩 사이트입니다.구조와 동작 프로세스* 사전에 용어 정리Resourc..
디자인 패턴 한 방에 정리하기(feat. 혹시 디자인 패턴 아시는 것 있으세요?) " 디자인 패턴 아시는 것 있으면 설명해주세요? "면접에 자주 나오진 않지만 기본 소양으로 알고 있으면 좋아 세 줄 요약 스타일(반드시 세 줄 아님)로 정리한다.코드와 이론 설명은 검색해서 다른 블로그에서 찾아볼 것.템플릿 메소드 패턴(Template method pattern)템플릿, 말 그대로 템플릿을 만들어주고 특정 메서드 안을 채워넣기만 하면 되는 디자인 패턴이다. (PPT 템플릿처럼 제목, 목차, 내용, 질의응답 칸이 있고 거기에 맞게 글을 채워넣듯)예를 들어 하나의 기능(게임 접속 과정(GameConnectMgr)에 4가지의 절차(보안->인증->권한->접속)를 개발해야 할 때, 필요에 따라 변경되는 부분을 하위클래스에 위임하도록 하고 템플릿을 보내주는 방법이다.A->B->C->D, A->B->..
스택, 큐, 덱(Stack, queue, deque)의 특징에 대해 설명해보세요! 스택, 큐, 덱의 특징에 대해 설명해주시겠어요? 스택(stack) : 자료의 입력과 출력을 한 곳(방향)으로 제한한 자료구조.LIFO(Last In First Out)구조 push(), pop()함수의 콜스택에 쓰이고 문자열을 역순으로 출력할 때, 연산자 후위표기법등에 쓰인다.큐(queue) : 자료의 입력과 출력을 한 쪽 끝(front, rear)으로 제한한 자료구조.FIFO(First In First Out)구조 put(), get()컴퓨터 버퍼에서 주로 사용, 마구 입력이 되었으나 처리를 하지 못할 때, 버퍼(큐)를 만들어 대기 시킨다.일반적인 큐의 단점 : 큐에 빈 메모리가 남아 있어도 꽉 차있는것으로 판단할 수 있음 rear가 배열의 끝에 도달했을 경우.=> 개선된 원형 큐가 나옴.원형 큐의 단..