본문 바로가기

취업준비

면접 질문 정리 (2019.11.19)

반응형

1. WAS 서버 와 WEB 서버의 차이

① 웹서버 (Web Server) : 웹 브라우저 클라이언트로부터 HTTP요청을 받아들이고, HTML문서와 같은 웹페이지에서 흔히 찾아 볼 수 있는 자료 콘텐츠에 따라 HTTP에 반응하는 컴퓨터 프로그램

WAS 서버 (Web Application Server) : 웹과 기업의 기간 시스템 사이에 위치하면서, 웹 기반 분산 시스템 개발을 쉽게 도와주고 안정적인 트랜잭션 처리를 보장해 주는 일종의 미들웨어소프트웨어 서버. 3계층 웹컴퓨팅 환경에서 기존의 클라이언트/서버환경의 애플리케이션 서버와 같은 역할을 하며, 클라이언트와 서버 환경에서 트랜잭션 처리 및 관리와 다른 기종 시스템 간의 애플리케이션 연동 등을 주된 기능으로 하고 있다.

WAS는 웹이 탄생한 이래, 주로 데이터베이스조회나 일반적인 비즈니스 로직에 대한 처리를 위해 다양한 언어로 개발된 인터넷/인트파넷환경의 소프트웨어를 지칭한다. 자바스크립트나 JSP등과 같은 스크립트 및 서비스들은 대개 최신의 데이터를 검색하기 위해 데이터베이스에 접근하고, 브라우저 또는 클라이언트프로그램을 통해 사용자들에게 검색 결과를 제공한다. WAS를 비롯한 애플리케이션 서버들은, 웹서버 즉 HTTP서버와 같은 컴퓨터를 공유할 수도 있지만, 별개의 컴퓨터를 독립적으로 사용하는 경우도 많다. 대규모 사이트에서는 오히려 WAS와 웹서버등을 위해 여러 대의 컴퓨터가 동원되기도 한다. 넷스케이프의 Netscape Application Server, BEA의 Weblogic Enterprise, 볼랜드의 AppServer, IBM의 Webshpere Application Server 등이 WAS의 대표적인 제품들이다.

▶ Web server와 WAS의 이해

- Web Server의 정의 : Web Client(웹 브라우저)에게 컨텐츠를 제공하는 서버, 정적인 HTML이나 jpeg, gif 같은 이미지를 HTTP 프로토콜을 통해 웹 브라우저에 전송함 -> WebToB

- WAS(Web Application Server)의 정의 : Server 단에 Application을 동작할 수 있도록 지원함 -> Jeus / 기본 웹 서버와 달리 동적인 요구에 대응하기 위해 적합한 형태로 변화, Web Client(브라우저)에게는 결과값만 전송함 / Container(컨테이너)라는 용어로 쓰이며, 초창기에는 CGI, 그 후에서는 Servlet, SJP, ASP 등의 프로그램으로 사용됨.

▶ Was Server 종류 : tomcat, tMax jeus, BEA Web Logic, IBM Web shpere, JBOSS, Bluestone, Gemston, Inprise, Oracle, PowerTier, Apptivity, SilverStream

▶ Web SEerver 종류 : IIS, apache, tMax WebtoB

 

2. INNER JOIN 과 OUTER JOIN 의 차이

① Inner Join : Join 조건에서 동일한 값이 있는 행만을 반환한다는 특징이 있다. USING 조건절이나 ON 조건절을 필수적으로 사용해야 한다.

② Outter Join : 테이블 T1 과 T2을 Join 할 경우에 T2에 Join 데이터가 있는 경우에는 T2 테이블의 데이터를 함께 출력하고 데이터가 없는경우네는 NULL 값으로 출력한다. T1 데이터를 온전하게 출력하는 경우에는 LEFT OUTER JOIN 이라고 부르며, T2의 데이터가 온전하게 출력되는 경우네는 RIGHT OUTER JOIN 이라 부른다.

 

3. Python 의 특징

문법이 간단하여 읽고 사용하기 쉽다. 

② 내장/표준 라이브러리와 방대한 오픈소스 라이브러리가 있다.

③ 인터프리터(Interpreter) 언어 이다. 한번에 한줄씩 차례대로 실행하기 때문에 디버깅이 쉽고 유지보수가 용이하다는 장점이 있다. 또한, 간단하고 쉬운 문법을 사용하기 때문에 객체지향 언어의 특성 덕분에 재사용 가능한 코드를 쉽게 만들 수 있다.

④ 객체지향언어 OOP (Object Oriented Programming) 이다. 하나의 기능을 객체로 만들고 그 객체들을 결합시켜 하나의 프로그램으로 만드는 것을 의미한다. 파이썬은 객체지향 뿐 아니라 절차지향과 함수형 패러다임 또한 구현할 수 있기 때문에 유연한 코딩이 가능하다.

⑤ 가장 큰 단점으로는 속도이다. 쉬운 난이도에 맞게 사람이 코드를 작성하는 작업 자체가 다른 프로그래밍 언어에 비해 비중이 작다. 사람이 하는 간단한 작업 외의 모든 작업을 컴퓨터가 해야 하기 때문에 비교적 느린 속도를 가지고 있다.

 

4. Garbage Collector

① 자바 실행 프로그램 JVM 과 메모리

- 메모리는 OS가 관리하는데 모든 프로그램들은 OS 위에서 돌아간다. 그래서 프로그램들은 OS에게 메모리 할당을 요청하는데 자바 실행 프로그램인 JVM 도 예외가 아니다. JVM이 메모리가 필요하면 OS에게 요청한다. OS가 처음부터 자기가 가진 메모리를 전부 빌려주면 다른 프로그램들에게 줄 메모리가 없게 되기 때문에 각 프로그램에게 메모리의 일부분만 빌려주는 방식으로 관리가 된다. JVM 은 OS로 받은 메모리 중에서 어디에 데이터를 저장할지 주소를 할당해야 한다. JVM은 자기가 받은 메모리 안에서 절대주소가 아니라 '상대주소'를 할당한다. 이것을 offset 주소라 한다. 프로그램이 OS로부터 부여받은 메모리는 물리적으로 분리되어 있을 수 있지만 논리적으로는 하나의 메모리처럼 동작한다.

② Garbage 란 ?

- 가비지는 '정리되지 않은 메모리', '유효하지 않은 메모리 주소'를 뜻한다. 

③ Garabage Collector 란 ?

- 메모리가 부족할 때 가비지를 자동으로 정리해주는 프로그램을 말한다. 프로그램을 실행하다 보면 가비지가 발생하는데 이것은 유효한 메모리가 아니다. 정리되지 않은 채로 남아있는 메모리들은 사용되지도 않는데 자리만 차지하고 있게 된다. 그래서 JVM의 가비지 컬렉터는 사용되고 있지 않은 메모리를 다른 용도로 사용할 수 있게 '메모리 해제'를 시켜는 프로그램이다.

④ Garbage Collector 은 언제 실행 되나?

- JVM은 메모리를 부여받고 열심히 프로그램을 실행하다가 메모리가 부족해지는 순간이 오면 OS에게 추가로 메모리를 요청한다. 바로 이 때 메모리를 더 달라고 요청하는 순간에 가비지 콜렉터가 실행된다. 또한, 서버 프로그램인 경우에는 24시간 내내 돌아가는데 이 때에는 JVM이 한가할 때(idle time) 가비지 컬렉터가 실행된다. JVM이 종료되면 당연히 사용하던 모든 메모리는 OS에게 반납된다.

 

5. interpreter 언어  와 compile 언어의

① Interpreter 언어

- 각각의 명렁어를 한 번에 한 개씩 번역하고 처리한다.

- 소스 코드를 분석하는 데 걸리는 시간은 적지만 전반적인 실행 시간은 더 느리다.

- 중간 객체 코드가 생성되지 않아 메모리 사용이 효율적이다.

- 첫 번째 오류가 발생할 때까지 프로그램을 계속 번역한다. 그래서 디버깅이 쉽다.

- Python, Ruby, Basic, JavaScript, SQL, HTML

② Compile 언어 

- 전체 프로그램을 스캔해서 기계어로 한 번에 번역한다.

- 소스 코드를 분석하는 데 많은 시간이 걸리지만 전반적인 실행 시간은 비교적 빠르다.

- 연결을 위한 중간 객체 코드를 생성하기 때문에 더 많은 메모리가 필요하다.

- 전체 프로그램을 스캔한 후에 오류 메시지를 생성하기 때문에 디버깅이 비교적 어렵다.

- C, C++, C#, Java, COBOL

 

6. MVC 패턴 : 사용자 인터페이스로부터 개발하는 부분을 완전히 분리해놓은 형태. 또한 개발, 테스트, 유지를 독립적으로 수행할 수 있게 해준다.

- Model : 애플리케이션의 데이터를 관리. 주로 View로부터 정보를 전달 받고, Controller로 부터 상태 변화에 대한 지시를 받는다.

- View : 모델의 데이터를 사용자 인터페이스 같은 적절한 형태로 표현한다. 하나의 모델에 여러개의 뷰가 존재할 수 있다.

- Controller : 사용자의 입력값을 받고 이를 바탕으로 모델 객체에 지시를 내린다.

 

7. Primary Key 와 Foreign Key

- Primary Key : UNIQUE 와 NOT NULL 의 특징을 모두 가지고 있는 제약조건으로 데이터의 중복은 물론 NULL값도 허용하지 않는다. 테이블에서 유일하게 하나만 있는 값이다.

- Foreign Key : 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키다. 다시 말해 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래키이다.

 

8. Oracle Database       VS       MySQL, MYSQL

- 가장 큰 차이점으로는 비용이 있다. 오라클은 충분히 큰 예산과 복잡한 비즈니스 요구에 맞춰 기업고객들을 위해 설계되었다. MySQL은 가장 일반적으로 데이터베이스 기반 웹 사이트 및 Non-Critical 애플리케이션에 사용되는 저가의 데이터베이스 이다.

- 오라클은 유료인만큼 유용한 기능이 많다. 내장함수, 성능, 대용량 처리에 좋은 파티션 시스템, 힌트

 

9. Overriding 과 Overloding

- 오버라이딩 : 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의 해서 사용.

- 오버로딩 : 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수를 다르게 하는 기술.

 

10. Database 설계 시 중요한 점

- 데이터베이스 설계 : 데이터베이스 설계란 사용자의 요구를 분석하여 그것들을 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 특정 DBMS로 데이터베이스를 구현하여 일반 사용자들이 사용하게 하는것이다.

- 데이터베이스 설계 시 고려 사항

무결성 : 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 정해진 제약조건을 항상 만족해야함

일관성 : 데이터베이스에 저장된 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 변함없이 일정해야함

회복 : 시스템에 장애가 발생했을 떄 장애 발생 직전의 상태로 복구할 수 있어야 함

보안 : 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함

효율성 : 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 등이 가능해야함

데이베이스 확장 : 데이터베이스 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야함

 

11. 동기화(Synchronous) 와 비동기화(Asynchronous)

- 동기 : 말 그대로 동시에 일어난다는 뜻. 요청과 그 결과가 동시에 일어난다는 뜻인데 바로 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다.

- 비동기 : 동시에 일어나지 않는다라는 뜻. 요청과 결과가 동시에 일어나지 않는다.

- 동기와 비동기는 상황에 따라서 각각의 장단점이 있다. 동기방식은 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 한다는 단점이 있다. 비동기방식은 동기보다 복잡하지만 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있는 장점이 있다.

- 참고 : https://private.tistory.com/24

 

동기와 비동기의 개념과 차이

데이터를 받는 방식인 동기와 비동기. 이 둘의 개념에 대해 설명하는 게시물은 매우 많은데 프로그래밍적으로 생각했을 때 이해가 가지 않아서 쉽게 이해를 할 수 있는 동기와 비동기의 예가 어떤것들이 있는지 검..

private.tistory.com

 

12. 데이터베이스에서의 트리거

- 트리거(Trigger)란 영어로 방아쇠라는 뜻인데, 방아쇠를 당기면 그로 인해 총기 내부에서 알아서 일련의 작업을 실행하고 총알이 날아갑니다. 이처럼 데이터베이스에서도 트리거(Trigger)는 특정 테이블에 INSERT, DELETE, UPDATE 같은 DML 문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램입니다. 즉! 사용자가 직접 호출하는 것이 아니라, 데이터베이스에서 자동적으로 호출하는 것이 가장 큰 특징입니다. 트리거(Trigger)는 테이블과 뷰 데이터베이스 작업을 대상으로 정의할 수 있으며, 전체 트랜잭션 작업에 대해 발생되는 트리거(Trigger)와 각행에 대해 발생되는 트리거(Trigger)가 있습니다.

- 참고 : https://limkydev.tistory.com/154

 

13. 프로세스와 쓰레드

- 쓰레드 : 프로세스내에서 동시에 실행되는 독립적인 실행 단위를 말함, 장점으로는 자원을 많이 사용하지 않고 구현이 쉬우며 범용성이 높다

- 프로세스 : 운영체제에서 실행중인 하나의 프로그램(하나 이상의 쓰레드를 포함한다.)

반응형

'취업준비' 카테고리의 다른 글

기술 면접 준비 (2)  (0) 2020.07.19
기술 면접 준비 (1)  (0) 2020.07.18
IT 기술 면접 질문 정리 (웹)  (2) 2019.05.06