IT면접 이야기

기술면접 준비#1

로춘남 2020. 7. 14. 23:40
728x90

※ 주변 지인의 면접정보 및 개인이 생각해본 예상질문들 입니다.

 

1. 자기소개

 

2. IT업계가 아닌 OO에 지원한 이유(IT기업이 아닌 일반기업의 IT직무에 지원 했을때)

 

3. 개발업무를 해본 경험(프로젝트 경험 제시)

 

4. 구글이나 검색을 통해 문제점을 해결하지 못했을 때 대처법

 

5. Java의 특징에 대해 말해보세요.

1) 객체지향 언어 입니다. 예를들어 부품에 해당되는 객체들을 먼저 생성하고, 이러한 부품들을 하나씩 조립하여 프로그램을 완성하는 언어 입니다.

2) 멀티 스레드를 지원 / 가비지 컬렉션에 의한 메모리를 자동 관리 /

3) JVM에서 동작하기 때문에 특정 OS에 종속적이지 않고, 이식성과 보안성이 좋음

4) 쉽게 배울 수 있으며, 다양한 오픈 라이브러리들을 통해 업무의 효율성을 증가

5) 유지보수가 수월함

6) 이식성이 높고 함수적인 스타일로 코딩을 지원

7) 다양한 애플리케이션 개발 가능 / 동적 로딩 지원 

 

6. JVM의 역할

Java Vircual Machine. Java와 OS 사이에서 중개자 역할을 수행하며, Java가 OS에 독립적으로 실행을 가능하게 해줌.

메모리 관리 및 GC(가비지 컬렉션) 등을 수행하는 자료구조 스택기반의 가상머신

 

7. Java를 만든 사람은?

: 제임스 고슬링

(내 친구는 라이언 고슬링이라고 말했지만, 당황하지 않고 분위기를 잘 살려서 합격한 경험이 있다고함. 미친놈ㅋ)

 

8. 변수란?

: 하나의 값을 저장 할 수 있는 메모리 공간을 의미

 

9. 자바의 제네릭이란?

: 클래스 내부에서 사용할 데이터 타입을 인스턴스(객체) 생성시에 결정하는 방식. Java는 데이터 타입의 안정성을 중요시하기 때문에 편의성과 안정성 2 가지를 모두 잡기위해 제네릭 기법을 사용.

만약 제네릭을 사용하지 않을 경우엔 빈번한 타입의 변환이 발생 될 수 있으며, 이는 곧 프로그램의 성능을 저하시킬 가능성이 있음. 제네릭을 사용하면 컴파일시 강한 타입체크를 할 수 있으며, 이는 곧 에러를 사전에 방지하는 역할을 한다.

Class<사용할 타입>

 

10. 가비지 컬렉션이란 무엇인가?

: 메모리 관리 기법 중 하나로 프로그램이 동적으로 할당했던 메모리 영역 중 필요없게 된 부분을 해제하는 기능.

즉, 메모리 영역 가운데 어떤 변수도 해당되지 않는 메모리 영역을 탐색하여 자동으로 해제하는 기능.

GC를 사용했을 때 장점

: 프로그래머가 동적으로 할당한 메모리 영역 전체를 완벽하게 관리하지 않아도됨.

단점: GC가 행동하는 시점이나 시간을 사전에 예측하기 어려워 실시간 시스템에는 적합하지 않음. 메모리가 해제되는 시점을 알 수가 없음.

예를들어 군사 목적의 미사일 발사 등에 사용했을 경우 미사일이 날아가는 도중 GC가 발생하면 알고리즘의 멈춤이 발생 될 수 있기때문에 실시간 시스템에서는 GC의 사용을 지양하는것이 좋음.

 

11. 객체와 클래스에 대해 설명해보시오

객체(Object): Class를 기반으로 실제 메모리가 할당된 상태이며, 이러한 객체를 조합하여 전체적인 프로그램을 완성해 나가는것을 곧 객체지향 프로그래밍이라고 함.

클래스(Class): 현실 세계의 객체의 속성과 동작을 추려내어 필드와 메소드로 정의한 것. 메모리가 할당되지 않은 상태

 

ex) 클래스= 설계도 / 객체 = 제품. TV설계도와 실물 TV

 

12. 객체지향 프로그래밍이란?(Object Oriented Programming)

클래스를 기반으로 객체들을 조립하여 전체적인 프로그래밍을 완성해 나가는 개발 기법

 

13. 객체지향 프로그래밍의 특징은?

캡슐화 / 상속 / 추상화 / 다형성을 기반으로 코드의 재사용성을 높이고 코드의 관리가 용이하고 제어자와 메소드를 이용하여 데이터를 보호하는데 좋으며 코드의 중복을 제거하여 오류를 방지 할 수 있다.

 

캡슐화: 외부객체에서 구현방식을 숨기고 별도로 접근 가능한 getter/settet 메소드를 통해 접근하는 방식

상속: 부모 Class를 자식이 접근 할 수 있도록 물려 받는 방식

다형성: 부모 클래스 타입으로 해당 부모를 상속받는 여러 자식들의 Class를 대입 할 수 있는 성질

추상화: 인터페이스에 의존하고, 구체적인 구현에는 의존하지 않는 것. 함수의 이름을 통해서 구체적으로 하는 일을 추상화시켜 나타낸다는 말.

 

14. 자바의 메모리 영역이란?

1) 메소드 영역: static 변수, 전역변수, 코드에서 사용되는 Class 등이 포함. 객체의 동작에 해당하는 실행블록

2) 스택(Stack): 지역변수, 메소드 등이 할당되는 LIFO 방식의 메모리(Last In First Out)

3) 힙(Heap): new 연산자를 통한 할당 된 객체들이 저장되며, GC에 의해 메모리 관리.

 

15. 직무 중 자신 있는 파트? 이유는? 해당 경험은?

 

16. OO (직무)에서 중요하다고 생각하는 것

 

17. 개발자에게 필요한 역량 3가지 이상 말해보시오

 

18. 웹 분야 외 관심 있는 분야

 

19. 프로젝트때 맡은 역할은? 어려움은 없었는지?

 

20. 팀원과의 갈등 상황에 대처하는 방법은?

 

 

728x90

'IT면접 이야기' 카테고리의 다른 글

[코딩테스트 후기] NH농협은행 코딩테스트 후기  (6) 2021.12.01
기술면접 준비#3  (0) 2020.07.15
기술면접 준비#2  (0) 2020.07.15