신입 자바 개발자 면접 준비 질문
JAVA
01. 자바에서 최소 단위 프로그램은 무엇인가?
- 클래스(class), 인터페이스(Interface) 이다.
02. 클래스의 구성 요소는?
- 속성변수(멤버변수), 생성자, 메소드로 구성되어 있다.
- 속성변수에는 동료 속성변수/메소드/생성자에서 공용으로 사용할 데이터가 저장된다.
- 메소드에는 실행 코드 즉, 실행 구문이 저장된다.
- 생성자는 객체 생성 시, 단 한 번 호출되는 것으로 외부에서 데이터가 들어온다. 외부에서 데이터가 들어오지 않으면 메소드의 리턴값은 항상 일정하다.
03. 인터페이스란 무엇인가?
- public, static, final의 성격을 가진 속성변수와 public, abstract의 성격을 가진 메소드로만 구성된 단위 프로그램이다.
04. void 키워드의 의미는?
- 메소드명 왼쪽에 나오는 키워드로, 리턴값이 없다는 뜻이다.
05. 속성변수에 붙은 static의 기능은?
- static 이 붙은 속성변수는 객체 생성없이 클래스명.속성변수 형태로 호출이 가능하다.
- static 이 붙은 속성변수를 가진 클래스를 new를 사용해서 2개 이상 객체화했을 때 객체끼리 이 static이 붙은 속성변수를 서로 공유한다. 객체끼리의 통신이라 볼 수 있다.
06. 속성변수에 붙은 final의 기능은?
- final이 붙은 속성변수는 처음 데이터를 지정한 후에는 절대 수정이 불가능하다.
- 자동 초기화가 될 수 없다. 속성변수를 선언할 때 데이터를 저장하거나 생성자 안에서 저장하는 코딩이 반드시 나와야 한다.
07. 인터페이스의 특징은?
- 객체화 시킬 수 없다. 그러므로 메소드를 호출할 수 없다.
- 예외적으로 속성변수는 인터페이스명.속성변수 형식으로 호출이 가능하다.
08. 메소드의 선언형식은?
-
public protected default private [static] [synchronized] [final abstract] 기본자료형 클래스명 인터페이스명 void 메소드명([자료형 매개변수], ~) { 실행구문; }
09. 리턴자료형에 따라 리턴되는 데이터는?
- public int xxx(){~} : int형 리턴
- public double xxx(){~} : double형 리턴, int형인 경우 double로 형 변환되어 리턴
- public String xxx(){~} : String형 리턴
- public ArrayList xxx(){~} : ArrayList 클래스를 객체화하고 객체의 메위주 리턴, null 값 리턴, ArrayList 클래스의 후손 클래스를 객체화하고 객체의 메위주 리턴
- public List xxx(){~} : List 인터페이스를 구현한 클래스 중에 한 클래스가 객체화되어 객체화된 메위주 리턴, null 값 리턴
- public void xxx(){~} : 리턴 데이터 없음
10. 메소드에 붙은 static의 기능은?
- static이 붙은 메소드는 객체 생성없이 클래스명.메소드명(~) 처럼 호출 가능하다.
11. 메소드에 붙은 final의 기능은?
- 자식 클래스가 이 메소드를 오버라이딩(=overriding) 하는 것을 금지한다.
12. 오버라이딩(=overriding)이란?
- 부모 클래스의 메소드를 자식 클래스 안에서 재정의하는 것을 오버라이딩이라 한다.
- 부모 메소드명, 리턴형, 매개변수의 개수와 자료형이 동일해야 한다. 접근지정자는 부모꺼보다 같거나 커야 한다.
13. 오버로딩(=overloading)이란?
- 동일한 클래스 내부에 같은 이름의 메소드를 2개 이상 정의하는 것을 말한다.
- 메소드 이름은 같고 메소드의 매개변수의 개수가 다르거나, 매개변수의 개수가 같으면 자료형이 달라야 한다.
14. 자바에서 어노테이션(=annotation)이란?
- 클래스명, 속성변수, 메소드, 메소드의 매개변수 앞에 붙어서 특정 기능을 부여하는 자바의 표기법을 말한다.
- 표기방식은 @영문 이며 영문은 반드시 대문자로 시작한다.
15. 메소드에 붙은 abstract의 기능은?
- 메소드에 블록(=body={})이 없는 경우 붙인다.
- 이런 메소드를 소유한 클래스를 추상 클래스라 부르며 클래스 앞에도 abstract가 붙으며, 객체화가 불가능하다.
16. 인터페이스의 특징은?
- 인터페이스에서 선언한 메소드를 모두 오버라이딩 하지 않는다면 객체화 되지 않는다.
- 인터페이스에서 정의된 메소드만 호출하려면 객체참조변수의 자료형을 인터페이스로 선언한다.
17. Object x = ddd.getA(); x에 저장되어 있는 데이터는?
- 객체참조변수의 자료형이 Object라면, 예측불가능한 임의의 객체가 리턴된다고 보면 된다. 즉, 변수 x에는 null 값을 포함하여 임의의 모든 데이터가 저장되어 있다.
18. String과 StringBuffer는?
- 모두 문자열을 관리하는 객체로 String은 원본 데이터를 절대 손상하지 않는다. 데이터가 누적될 때 매번 String 객체를 새로 생성하므로 메모리 낭비가 심하다. 이와 같은 단점을 커버하기 위해 나온 객체가 StringBuffer 객체이다.
- StringBuffer 객체는 대량의 문자 데이터를 누적시킬 때 사용한다.
- StringBuffer 와 StringBuilder는 Thread-safe 여부의 차이가 있다. StringBuilder는 Thread-safe 하지 않는다. 따라서, Multi-Thread 환경에서 사용할 때는 StringBuffer를 사용한다.
19. throw, throws 차이점을 설명하시오.
- throw 예약어 : 사용자가 예외를 직접 발생시키기 위해 사용하는 예약어이다.
- throws 예약어 : 예외를 직접 처리하지 않고 미룰 때 사용한다.
20. 생성자가 무엇인가?
- 생성자(=constructor)는 외부에서 들어온 데이터를 속성변수(property)에 저장하는 코딩이다.
- 생성자의 목적은 초기화이다.
21. 생성자의 목적은 무엇인가?
- 생성자의 목적은 속성변수 초기화이다.
- 초기화(=initialization)란 외부에서 들어온 데이터를 속성변수에 저장하여 계속 사용할 수 있게 환경을 만드는 것이다.
- 초기화를 하는 이유는 메소드 안에서 데이터를 사용하기 위해서이다. (=속성변수의 존재 이유와 상통함)
21. 메소드의 존재 이유는?
- 실행구문을 사용하기 위해서이다.
22. 객체 생성 시 객체로 외부 데이터를 주입하는 방법은 무엇인가?
- 생성자 호출, setter 메소드 호출이다.
- 자바의 속성변수는 대부분 private 으로 직접 접근을 막는다. → 즉, 속성변수는 클래스 내부에서만 사용하고 외부에서는 사용하지 못하도록 캡슐화가 이루어 진다.
23. 할당이란?
- 할당(=assignment)은 초기화 이후 속성변수에 데이터를 저장할 때를 말한다.
24. 객체지향 4가지 특징
- 추상화
- 실제 세상을 객체화하는게 아니라 필요한 정보만을 중심으로 간소화하는 것을 의미한다. 예를 들어 지하철 노선도
- 프로그래밍 언어에서는 객체들의 공통적인 속성과 기능을 중심으로 추상화한다. (객체 정의)
- 캡슐화
- 객체에 필요한 데이터나 기능(메소드)을 책임이 있는 객체에 그룹화시켜주는 것이다.
- 상속
- 상위 클래스의 기능을 하위 클래스가 사용할 수 있다.
- 여러 객체에서 사용되는 기능을 하나의 클래스로 분리해서 사용할 수 있도록 위함이다. (중복되는 코드의 재사용을 의미)
- 다형성
- 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 동작하도록 구현하는 것이다.
- 오버로딩, 오버라이딩
25. call by value, call by reference
- call by value(값에 의한 호출)
- 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다.
- 함수 호출 시 전달되는 변수의 값을 복사하여 함수의 인자로 전달한다.
- 함수 안에서 인자의 값이 변경되어도, 외부의 변수의 값은 변경되지 않는다.
- Java의 경우 함수에 전달되는 인자의 데이터 타입에 따라서 (원시자료형 / 참조자료형) 함수 호출 방식이 달라진다.
- 원시 자료형(primitive type) : call by value 로 동작(int, short, long, float, double, char, boolean)
- 참조 자료형(reference type) : call by reference 로 동작(Array, Class Instance)
- call by reference(참조에 의한 호출)
- 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다. 함수가 종료되면 해당 공간은 사라진다.
- 함수 호출 시 인자로 전달되는 변수의 레퍼런스를 전달한다. (해당 변수를 가르킨다)
- 따라서, 함수 안에서 인자의 값이 변경되면, 아규먼트로 전달된 객체의 값도 함께 변경된다.
26. Process와 Thread의 차이
- 프로세스(Process)
- 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)
- 운영체제로부터 시스템 자원을 할당받는 작업의 단위
- 동적인 개념으로는 실행된 프로그램을 의미
- 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료 구조에 접근할 수 없다.
- 컴퓨터가 어떠한 일을 하고 있는 상태
- 스레드(Thread)
- 프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스의 특정한 수행 경로
27. 전역변수, 지역변수의 차이
- 전역변수
- 메소드 속에 선언하여 해당 메소드 블록에서만 사용 가능한 변수이다.
- 동료 속성변수/메소드/생성자에서 공용으로 사용할 데이터가 저장된다.
- 지역변수
- 메소드 바깥에 선언하여 클래스 전체에서 사용 가능한 변수이다.
28. synchronized
- 메소드에 붙으면 한 번에 한 스레드만 사용할 수 있다.
29. 객체 지향 프로그래밍(OOP)이란?
- 객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
30. 객체 지향 프로그래밍의 장단점은?
- 장점
- 코드 재사용 용이 : 남이 만든 클래스를 가져와서 이용할 수 있고, 상속을 통해 확장할 수 있다.
- 유지보수가 쉬움 : 절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야하는 반면 객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수혹은 메서드로 존재하기 때문에 해당 부분만 수정하면 된다.
- 대형 프로젝트에 적합 : 클래스 단위로 모듈화시켜서 개발할 수 있으므로 대형 프로젝트처럼 여러 명, 여러 회사에서 프로젝트를 개발할 때 업무 분담하기 쉽다.
- 단점
- 처리 속도가 상대적으로 느림
- 객체가 많으면 용량이 커질 수 있음
- 설계 시 많은 시간과 노력이 필요
31. 클래스와 인스턴스(객체)는 무엇인가?
- 클래스 : 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성(attribute)과 행위(behavior)를 변수와 메서드로 정의한 것으로 객체를 만들기 위한 메타정보라고 볼 수 있다.
- 인스턴스(객체) : 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것으로 실제 프로그램에서 사용되는 데이터
32. 자바와 자바스크립트 문법 구분
- (1) : s.length() : java 는 length()
- (2) : s.length : javascript는 length
33. 자스, 자바, 파이썬에서 다량의 데이터를 관리하는 객체
- 자스 : Array 객체, JSON
- 자바 : 배열 객체, Collection 객체 (HashMap, ArrayList)
- 파이썬 : List, Tuple, Dictionary, set
Oracle
01. 데이터베이스의 조건은?
- 실시간 접근성, 지속적인 변화(=최신의 정보가 정확하게 저장), 동시 공유 이다.
02. RDBMS란?
- Relational Database Management System의 약자로 관계형 데이터베이스 관리 시스템이다.
- 데이터가 컬럼(column=열)과 로우(row=행)로 이루어진 테이블에 저장되며, 테이블들 사이에 관계를 설정하여 관리하는 SW 또는 시스템을 말한다.
03. 절차적(procedural) 언어란?
- 모든 처리 과정을 일일이 기술하고 기술된 순서대로 로직이 처리되는 언어이다. C, Java 등이다.
04. 구조적(structured) 언어란?
- 처리 과정을 일일이 기술할 필요 없이 일정한 틀이나 패턴이 있어 조건들만 맞게 나열하면 로직이 처리되는 언어이다. SQL 등이다.
05. SQL의 종류는?
- DDL(Data Definition Language = 데이터 정의 언어), DML(Data Manipulation Language = 데이터 처리 언어), DCL(Data Control Language = 데이터 제어 언어) 이다.
- DDL은 객체를 생성, 수정, 삭제 등의 작업을 하며 트랜잭션 작업 제어 대상이 아니다. 객체를 생성하는 create문, 객체를 수정하는 alter문, 객체를 삭제하는 drop문이 있다.
- DML은 테이블 안의 데이터를 입력, 수정, 삭제, 검색 등의 작업을 한다. 행 단위의 데이터를 입력하는 insert문, 셀 단위의 데이터 수정,삭제 작업을 하는 update문, 행 단위의 데이터를 삭제하는 delete문, n행의 m열의 데이터를 검색하는 select문이 있다.
- DCL은 트랜잭션 작업 단위의 데이터 입력, 수정, 삭제 작업을 모두 인정하는 commit문, 트랜잭션 작업 단위의 데이터 입력, 수정, 삭제 작업을 모두 취소하는 rollback문, 접근을 제어하고 작업권한을 허용하는 grant문, 권한을 제거하는 revoke문이 있다.
06. 트랜잭션(Transaction)이란?
- 모두 취소되거나 모두 완료되는 2가지 결과로만 진행되는 작업 단위를 말한다.
- 트랜잭션은 주로 입력, 수정, 삭제 SQL 구문 실행 시 설정한다.
- 트랜잭션이 없는 작업은 N가지 이상의 다양한 결과로 진행될 수 있다.
07. 데이터베이스 차원에서 스키마(Schema)란?
- 데이터베이스의 구조에 대한 정의와 제약조건 등을 기술한 명세서를 말한다.
- 계정이 생성한 모든 객체들을 의미한다. 객체들이 DB 구조에 대한 정의와 이에 대한 제약조건 등을 기술한 명세서이기 때문이다.
08. 제약조건이란?
- 테이블에 입력되는 데이터의 입력 가능 조건을 말한다.
- 제약조건에 위배되는 데이터는 삽입될 수 없다. 즉, 행 단위로 입력이 안된다.
09. 오라클에서 제약조건의 종류는?
- not null, unique, default, check, primary key, foreign key가 있다.
- not null은 반드시 데이터가 입력되야 한다는 뜻이다. unique는 중복되는 데이터는 입력이 불가하다. default는 데이터를 입력하지 않으면 default로 설정한 값이 입력된다. check는 지정한 데이터만 입력 가능하다.
10. primary key(pk)가 무엇인가?
- not null, unique의 제약조건 성질을 가진다. 즉, 행과 행을 구분할 수 있는 유일한 데이터가 입력된다. 차후에 foreign key에 의해 참조 당할 수 있다.
- fk가 참조하고 있는 행 단위 데이터는 삭제할 수 없고, fk가 참조하고 있지 않은 행 단위 데이터는 삭제할 수 있다.
11. foreign key(fk)가 무엇인가?
- pk를 참조하는 키로, primary key에 존재하는 데이터만 삽입될 수 있다. 예외적으로 null 값은 입력 가능하다. 즉, 데이터가 입력되지 않을 수도 있다.
- table과 table 간의 관계를 설정하는 키다. pk와 fk로 테이블 간의 관계가 형성된다.
- fk 제약조건을 설정하면 존재하지 않는 pk 데이터가 입력될 수 없다.
12. 인라인뷰(Inline view)란?
- from절에 나오는 select를 말한다. from절에는 테이블명이 나오며 이 자리에 select가 나올 경우 select 결과물을 테이블로 생각하면 된다.
- select 결과물을 테이블로 취급하기 때문에 메모리에 부담을 준다.
13. 오라클에서 n행 → m행까지 검색하는 이유는?
- 실제로는 select 결과물이 웹브라우저로 출력된다. 만약 select 결과물이 100,000 행이면 다 보여줄 경우 웹브라우저 로딩이 걸린다. 그러므로 1행 ~ 10행과 같이 끊어서 웹브라우저에 출력이 되야 로딩이 걸리지 않는다. 이렇게 select 결과물에서 n행씩 끊어서 화면에 보여주는 것을 페이징 처리라 한다.
14. view(뷰)란?
- 실시간으로 select 결과물을 테이블처럼 가장해서 보여주는 테이블이다. 가상 테이블이라고도 한다.
15. view(뷰)를 사용하는 목적은?
- 보안성 때문이다. 만약 특정 계정에 특정 컬럼만 제외하고 보게 하려면 해당 컬럼을 제외한 뷰를 만들어서 권한을 다르게 부여해 보게할 수 있다.
- join 등과 같은 길고 복잡한 select 문장을 뷰로 만들어 테이블처럼 사용하여 편의성을 제공한다.
16. var engs = new Array(88);
- engs 에는 88개의 배열 변수가 들어있다.
- 배열 변수는 undefined이 들어있다. (자바스크립트는 데이터를 지정하지 않으면 undefined가 들어 간다.)
- Java : String[] engs = new String[88];
- engs에는 88개의 배열 변수가 들어있고, null 이 들어 간다.
HTML
01. 웹서버 구축 후 웹서버에 내장된 파일끼리, 즉, 웹프로그램 자원끼리 호출할 때 자원 경로 종류는?
- 절대 경로와 상대 경로가 있다.
02. form 태그의 action 속성의 기능은?
- form 태그 안의 입력양식에 입력(선택)된 데이터를 보낼 서버 쪽 URL 주소를 설정하는 속성이다.
03. get방식과 post방식이란?
- 입력(선택)된 데이터를 서버로 보내는 방법이다.
- get 방식은 입력(선택) 데이터가 URL 뒤에 붙어 전송되어 보안성이 낮은 데이터 전송 시 사용한다.
- post 방식은 입력(선택) 데이터가 안보이게 전송되어 보안성이 높은 데이터 전송 시 사용한다.
04. form 태그의 value 속성은?
- 입력 또는 선택한 값이 저장되는 속성이다.
- 서버의 웹 프로그래밍 언어로 전달되고 최종 DB의 테이블에 저장한다.type=”button”, “submit”, “reset” 의 경우 버튼에 삽입되는 단순 문자열 설정이고 서버의 웹 프로그래밍 언어로 전달되지도 않는다.
JavaScript
01. AJAX 란?
- 비동기 방식으로 웹서버와 통신한 후 통신 결과물을 현 화면에 반영하는데 사용되는 기술들을 총칭한다.
- XMLHttpRequest 객체, DOM, 자바스크립트, CSS 기술들을 총칭한다.
02. 비동기 방식이란?
- 페이지 이동 없이 웹서버와 통신하는 방식을 말한다.
- 네이버에서 키워드 입력하면 관련 검색어가 하단에 붙는 것이나 네이버 지도에서 지도를 밀면 새로운 지도가 나오는 것이다. 또는 아이디 입력 후 버튼을 눌러 페이지 전환 없이 서버와 통신하여 아이디 중복여부를 수신 받는 경우이다.
03. 동기 방식이란?
- 페이지가 이동하면서 웹서버와 통신하는 방식을 말한다.
04. 선택자(=selector)란?
- 태그를 지칭하는 방법론이다.
05. 다량의 데이터를 저장해서 관리하는 방법은?
- Array 객체에 저장한다. 반복문으로 데이터를 꺼내기 쉽다. 데이터가 무슨 데이터인지 알기가 힘들어서, 단순한 일방적인 데이터를 저장한다
- 일회성 사용자 정의 객체에 저장한다. 데이터가 무슨 데이터인지 알 수가 있어 꺼내기 쉽다. 반복문 사용이 힘들다.
06. JSON 이란?
- 동종 또는 이기종 S/W끼리 쉽게 데이터를 전달하기 위해 만든 개방형 표준 데이터 표기법을 말한다.
- Javascript Object Notation 이다.
07. Array 객체 안에 중복된 데이터를 제거하는 프로그램을 작성하면? 단, JQuery 객체의 unique 메소드 사용하지 않기
08. 기존 Array 객체에서 중복없이 배열변수 안의 값을 복사해서 새로운 Array 객체에 저장하기
Spring
01. 웹브라우저에서 웹서버로 접속을 시도할때 가지고 가는 요청메시지의 내용물은?
- URL 주소, 파라미터명과 파라미터값, 쿠키명과 쿠키값, 헤더명과 헤더값 기타 등등이 있다.
02. Spring MVC 패턴의 장점은?
- 프로젝트 규모가 클수록 유지보수성이 좋다. 자바 객체 안에서 어노테이션(annotation)을 적극적으로 사용하여 자바의 날 코딩이 줄어든다.
- 속성변수의 자료형으로 인터페이스를 적극적으로 사용하여 객체 간의 결합도를 약하게 하여 연쇄 수정의 범위를 줄인다. 즉, 유지보수성이 증가한다.
03. Spring MVC 패턴의 단점은?
- 규모가 작거나 유지보수가 많이 필요하지 않은 경우의 프로젝트에서는 어울리지 않다. 환경 설정이 복잡하다. 작동 원리가 복잡하기에 사전 학습이 힘들다.
04. 웹브라우저와 웹서버의 연결 상태를 관리하는 원리
- 클라이언트가 종료된 웹브라우저를 실행한 후 URL을 입력하고 웹서버에 접속한다.
- 웹서버가 HttpSession 객체를 생성한다. HttpSession 객체는 고유 아이디를 가지고 있다. 개발자 코딩에 의해 HttpSession 객체에 원하는 데이터를 저장한다.
- 웹서버가 응답 메시지를 전송한다. 이때 응답메시지에는 HttpSession 객체의 고유 아이디가 쿠키로 저장되어 있다.
- 웹브라우저가 응답메시지를 받고 응답메시지 안의 고유 아이디가 저장된 쿠키를 꺼내서 웹브라우저의 메모리 공간에 저장시킨다.
- 클라이언트의 웹브라우저가 URL을 입력하고 요청 메시지를 가지고 웹서버에 재접속한다. 이때 요청 메시지에는 쿠키로 저장된 고유 아이디가 들어 있다.
- 웹서버는 요청 메시지 안의 고유 아이디 쿠키값을 꺼내어 이 고유 아이디를 가진 HttpSession 객체를 찾아 대응시킨다. HttpSession 객체에서 아까 접속 시 저장된 데이터를 꺼내서 어떤 작업을 한다.
05. DAO란?
- Data Access Object의 약자로, DB 연동 기능의 메소드를 가진 자바 객체를 지칭한다.
06. DTO란?
- Data Transfer Object의 약자로, DB 연동 시 사용되는 다량의 데이터를 관리하는 자바 객체이다.
07. Spring MVC 패턴에서 DB 연동을 세분화 한 곳은?
- @Service, @Transactional 어노테이션이 붙은 객체의 메소드이다. 트랜잭션을 걸기 위해서이다.
08. Spring MVC 패턴에서 트랜잭션이 걸리는 부분은?
- @Service, @Transactional 어노테이션이 붙은 객체의 메소드이다.
09. Spring에서 @Autowired 어노테이션의 역할은?
- 속성변수에 어노테이션을 붙이면 자료형에 맞는 객체를 생성하여 생성한 객체의 메위주를 저장한다. 만약 자료형이 인터페이스라면 인터페이스를 구현한 클래스가 객체화된다.
- 즉, 인터페이스를 구현한 클래스명을 몰라도, 클래스명이 변경되어도 연쇄 수정을 하지 않아도 된다. 이를 객체 간 연결성이 약화되었다 한다. 결과적으로 결합도가 낮춰진다.
10. 웹브라우저에서 URL 입력란에 “localhost:8081/loginForm.do”를 입력할 때 localhost 자리에 원래는 도메인 주소 또는 IP 주소가 들어가야 한다. 그런데 localhost는 무슨 의미인가?
- [웹브라우저]와 [웹서버]가 동일한 운영체제에 있을 경우 [웹브라우저]에서 [웹서버]로 접근할 때 도메인 주소 또는 IP 주소 대신에 쓰는 URL 주소 일부이다. 연습용/개발용 주소이다.
11. 예외발생 시 처리 방법은?
- 정의) 예외란? 자바에서 예외란 자바 가상 머신이 감지할 수 있는 에러를 말한다.
- 자바에서 감지할 수 없는 에러란? 전원 꺼짐
- try{ 예외발생가능코딩 } catch(~) { 예외발생시실행코딩 } finally{ ~ }
- 완벽하게 try-catch 구문에서 예외를 직접 처리한다. (직접 처리)
- 비유) 불나면 소화기로 직접 끔
- 메소드() throws Exception { 예외발생코드 throw new Exception(); }
- 다른쪽으로 예외를 넘겨 버린다. (간접 처리)
- 비유) 불나면 소방서에 전화해서 소방관이 끔
12. JSP 에서 사용자 정의 태그, 커스텀 태그를 사용하는 이유는?
- 태그 형태이므로 디자이너, 퍼블리셔, 초급 개발자가 접근이 쉽다.
- 큰 에러가 아닌 이상 화면이 멈추지 않는다.
- null 처리에 대해 관대하다. null에 대해 민감한 반응을 보이지 않는다.
13. 웹서버 쪽에서 클라이언트(=웹브라우저)에 있는 쿠키를 삭제하는 방법은?
- 웹서버는 클라이언트에게 있는 쿠키를 지울 수 없다.
- 그 쿠키명에 해당하는 쿠키에 null 값을 저장하여 응답메시지로 클라이언트에게 보내서 덮어씌운다.
14. 모든 페이지에서 동일한 데이터를 출력하고 싶다면?
- HttpSession 객체를 사용한다. HttpSession 객체에 저장된 데이터는 모든 JSP 페이지에서 ${sessionScope.키값명} 으로 꺼내 표현할 수 있다.
- HttpSession 객체는 웹브라우저 처음 접속 시 생성되어 웹브라우저 종료 시까지 혹은, 특정 조건까지 사라지지 않는다.
- 예를 들어 쇼핑몰에서 장바구니에 담은 데이터를 누적시키는데 HttpSession 객체를 사용한다.
15. 언어별 주석문은?
16. 쿠키, 세션 차이는?
- 쿠키
- 웹 사이트 방문 시 웹 서버가 준 방문 흔적 데이터, 화면에 보이지 말고 클라이언트에게 가지고 있으라는 데이터
- 저장 위치 : 클라이언트(=접속PC)
- 만료 시점 : 쿠키 저장 시 설정 (브라우저가 종료되어도 만료 시점이 지나지 않으면 자동으로 삭제되지 않음)
- 속도 : 세션보다 빠름
- 보안 : 세션보다 안 좋음
- 예시 : 방문했던 사이트에 다시 방문 하였을 때 아이디, 비밀번호 자동 입력, 팝업창을 통해 오늘 이 창을 다시 보지 않음 선택
- 세션
- 웹브라우저와 웹서버의 연결 상태
- 저장 위치 : 웹 서버
- 만료 시점 : 브라우저 종료 시 삭제 (기간 지정 가능)
- 속도 : 쿠키보다 느림
- 보안 : 쿠키 보다 좋음
- 예시 : 쇼핑몰 장바구니
17. model1, model2 에 대해 설명하시오
- model1
- 출력을 위한 view 코드와, 로직 처리를 위한 자바 코드가 함께 있어 JSP 코드 자체가 복잡해진다.
- model2
- JSP는 view단을 맡고, 요청에 대한 흐름제어를 Controller인 servlet에서 담당하며 요청에 대한 로직 처리는 Model인 서비스클래스 또는 자바빈이 담당한다.
React
01. ES6 문법을 따르는 자바스크립트를 구형 웹브라우저에서 실행시키는 방법은?
- ES6에 따라 코딩한 후 Babel(바벨) 같은 도구(=SW)를 사용하여 하위버전 ES5로 변환한다.
- Babel(바벨)은 ES6 문법을 하위버전 ES5 문법으로 변환하는 트랜스파일러이다.
02. 클래스 컴포넌트의 state 속성변수에 대해 설명하시오.
- 0~1개 선언 가능한 리액트가 제공하는 속성변수이다.
- 선언 시 this. 을 붙이지 않는다. 그러나 호출할 때는 this.을 붙인다.
- state 속성변수의 갱신은 리액트가 제공하는 setState 메소드 호출로만 가능하다. this.setState( 갱신데이터 ); 호출
- 호출로 state 속성변수 안의 값이 갱신되면 render() 메소드가 재호출된다.
- 재 호출되어 출력되는 콘텐츠는 이전 화면 콘텐츠를 갱신하는게 아니라 달라진 부분만 갱신시켜 버린다.
03. var, let, const 은 무엇인가?
- 변수 선언 시 변수 왼쪽에 붙이는 키워드이다.
- var은 함수 내부에서 사용 가능하고, 초기화 이후 갱신이 가능하며, 동일한 변수를 중복 선언 가능하다.
- let과 const는 블록 내부에서 사용가능하며, 동일한 변수로 중복 선언이 불가능하다.
- 차이점은 let은 초기화 이후 갱신이 가능하며, const는 갱신이 불가능하다.
04. undefined와 null은?
- null은 참조형 즉, 객체형이다. 객체의 메모리 위치 주소값이 아직은 없다. 추후에 들어갈 예정이란 뜻이다.
- undefined 는 5가지가 아닌 경우의 데이터는 모두 undefined 취급한다.
- null 과 undefined는 둘 다 값이 없음을 의미하는건 맞는데, null은 우리가 없다고 고의적으로 설정하는 값을 의미하고, undefined는 우리가 설정을 하지 않았기 때문에 없는 값을 의미한다.