기술면접대비

[DO IT MYSELF] 기술면접대비 - (2)

코드사냥꾼 2020. 4. 24. 18:38

1. Java와 Javascript의 차이점을 설명하시오.

👉🏻 자바는 객체지향 프로그래밍의 대표적인 언어로서 JVM이라는 가상 머신을 이용하기 때문에 운영체제 종류에 관계없이 대부분의 시스템에서 실행됩니다. 또한, 변수 자료형이 반드시 선언되어야 하며 소스코드를 자바 바이트 코드로 변환해야 하는 컴파일 과정을 거칩니다. 자바스크립트는 HTML의 상호작용성과 동적인 시각효과를 나타내기 위한 객체 기반 스크립트 언어입니다. 자바와 달리 변수 자료형을 선언하지 않아도 브라우저가 자동으로 파악하며, 인터프리터 언어로서 컴파일 과정을 거치지 않습니다.

즉, 자바와 자바스크립트의 차이점은 컴파일의 과정이 다르며 자바는 서버측의 언어이고, 자바스크립트는 클라이언트용 언어라는 것입니다.

 JVM이란? 자바 바이트 코드를 운영체제에 맞게 해석하는 가상 머신입니다.
인터프리터 언어란? 사람이 이해할 수 있는 고급언어로 작성된 코드를 기계어로 해석한 언어입니다.

2. 애자일 방법론에 대해 설명하시오.

👉🏻 애자일 방법론이란 신속한 반복 작업을 통해 소프트웨어를 개발하여 고객의 요구 변화에 유연하고도 빠르게 대응하는 개발 방법론입니다. 즉, 개발 프로세스가 아닌 팀원 간의 상호작용, 고객과의 협력, 변화에 민첩한 대응 능력에 더 큰 가치를 두며 고객에게 전달할 가치를 중시한다는 의미를 가지고 있습니다.

3. 네트워크 OSI 7 Layer란 무엇인지 설명하시오.

👉🏻 OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다. OSI 7의 계층 구조로는 응용 계층, 표현 계층, 세션 계층, 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층이 있습니다.

1. 물리계층은 실제 장치들을 연결하기 위한 전기적 물리적 세부 사항을 정의한 계층입니다.

2. 데이터 링크 계층은 2 계층으로 물리 계층을 통해 송수신되는 정보의 오류의 흐름을 관리하여 프레임 단위로 안전한 정보를 전달합니다.

3. 네트워크 계층은 3계층으로 데이터를 목적지까지 패킷이라는 단위로 가장 안전하고 빠르게 전달하는 기능을 합니다.

4. 전송 계층은 4계층으로 TCP 프로토콜을 이용하며 통신을 활성화하기 위한 계층입니다.

5. 세션 계층은 5계층으로 응용 프로그램 관점에서 데이터가 통신하기 위해 논리적인 연결을 하는 역할을 합니다.

6. 표현 계층은 6계층으로 데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고, 암호화합니다.

7. 응용 계층은 데이터의 최종 목적지로써 HTTP, POP3, SMTP 등과 같은 프로토콜이 존재하며 사용자의 데이터 입출력 부분을 담당합니다.

4. CVS와 SVN에 대해 설명하시오.

👉🏻 우선, CVS와 SVN은 형상관리 툴입니다. CVS는 소프트웨어 개발 프로젝트에서 파일 단위의 모든 작업과 모든 변화를 추적하고 여러 개발자가 협력하여 작업할 수 있는 환경을 지원합니다. SVN 은 CVS의 단점을 보완하기 위해 만들어진 것으로 CVS에 비해 엄청난 속도의 빠른 업데이트를 제공하며 양방향 데이터 전송으로 네트워크의 트래픽을 최소화합니다.

5. JDBC와 ODBC의 차이점에 대해 설명하시오.

👉🏻 JDBC는 자바와 데이터베이스를 연결하기 위한 자바 API이며, ODBC는 모든 응용 프로그램을 데이터베이스와 연결시켜주는 개방형 인터페이스입니다. 또한, JDBC는 자바에서만 가능한 반면 ODBC는 자바, C, C++과 같이 모든 언어에 상관없이 사용할 수 있다는 장점이 있습니다.

API란? 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스입니다.

6. 동기식 일처리와 비동기식 일처리의 차이점에 대해 설명하시오.

👉🏻 동기식 일처리는 요청과 결과가 동시에 일어나며 설계가 간단하고 직관적입니다. 그러나 결과가 나올 때까지 대기해야 하는 단점이 있습니다. 비동기식 일처리는 요청과 결과가 동시에 일어나지 않기 때문에 자원의 효율적인 사용이 가능합니다. 그러나 동기식 일처리에 비해 설계가 복잡하다는 단점이 있습니다.

7. SpringFramework의 특징과 장단점을 설명하시오.

👉🏻 스프링 프레임워크는 IoC 기술을 이용해 어플리케이션 간의 결합을 제어하고, 의존성 주입을 통해 객체간의 관계를 설정합니다. 또한 AOP 기능을 사용하여 자원을 관리하며 수많은 라이브러리와 연동 기능을 지원한다는 특징이 있습니다.

다양한 형태의 트랜잭션을 사용할 수 있으며, 다양한 프레임워크와 통합하고 애플리케이션 설정 관련 부분을 단일화해서 관리할 수 있다는 장점이 있습니다. 그러나 초반 설정이 복잡하다는 단점이 있습니다.

IoC 기술이란? 객체 생성과 의존관계 처리에 대한 제어를 컨테이너가 처리하는 기술입니다.
** 결합은 높을수록 유지보수가 어렵기 때문에 의존성을 주입하거나 디자인 패턴을 사용하여 결합도를 낮춰야합니다.

8. 웹과 앱의 차이점은 무엇인지 설명하시오.

👉🏻 웹은 브라우저를 통해 동작하며 사용 단말기에는 제한이 없고 서버 환경에 따른 보안이 필요합니다. 또한 단말 정보와 서버 정보 이용에 대해 제한적입니다. 그러나 앱의 경우 각 OS마다 독립적으로 동작하며 OS에 따라 단말기에 제한이 걸리고 스토어 환경에 따른 보안이 이루어지며 프로그램 의도에 따라 단말 및 서버 정보를 사용할 수 있습니다.

9. 멀티 스레드와 멀티 프로세스는 어떤 차이점을 가지고 있는지 각각의 특성과 함께 설명하시오.

👉🏻 멀티 스레드는 하나의 프로그램에서 다수의 스레드를 생성하여 하나의 작업을 처리하는 방식입니다. Stack을 제외한 모든 메모리를 공유하여 통신의 부담이 적고, 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있습니다. 멀티 프로세스는 하나의 작업을 처리하기 위한 다수의 프로세스를 말합니다. 여러 개의 프로세스 중 하나에 문제가 발생하더라도 독립적인 공간을 차지하고 있기 때문에 다른 프로세스에는 영향을 주지 않습니다. 이 둘의 차이점은 멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유하지만 멀티 프로세스는 각 프로세스가 독립적인 메모리를 가지고 별도로 실행된다는 점입니다.

스레드란? 프로세스 내에서 실제로 작업을 수행하는 주체를 의미합니다.
프로세스란? 실행되고 있는 프로그램을 의미합니다.

10. Heap영역과 Stack영역에 대해서 설명하시오.

👉🏻 Heap 영역은 필요에 의해 동적으로 메모리를 할당할 때 위치하는 메모리 영역으로 메모리 주소 값에 의해서 참조되고 사용되는 영역입니다. Stack 영역은 정적 메모리 구조를 가지며 프로그램이 자동으로 사용하는 임시 메모리 영역으로 함수 호출 시 생성되고 함수가 종료되면 사라집니다.

둘의 차이점은 Heap 영역은 동적 메모리 구조를 가지며 Stack 영역은 정적 메모리 구조를 가진다는 점입니다.