IT면접 이야기

기술면접 준비#2

로춘남 2020. 7. 15. 07:16
728x90

21. 프로젝트를 하면서 어려운 기능 부분을 스스로 찾아보고 해결해본 경험은?

 

22. 이용하는 개발자 커뮤니티가 있는지?

 

23. Java에서 사용해본 자료구조는?

 

24. Git에서 remote란?

원격 저장소를 관리 할 수 있는 명령어. Git remote add를 통해 사용 가능

 

25. 원격 저장소란?

원격 저장소(Remote Repository)란 내 Local PC 저장소가 아닌 네트워크상의 다른 위치에 존재하는 Git 저장소

Push: 원격 저장소에 데이터를 쓰는것 / Pull : 원격 저장소에서 데이터를 가져오는 것

Clone: 원격 저장소를 내 Local PC의 Git 저장소로 복사하는 것

 

26. 추상 메소드와 추상 클래스란?

추상 메소드: 메소드의 정의부만 있고 구현부는 없는 메소드

추상 클래스: 추상 메소드를 적어도 하나 이상 가지고 있는 클래스로 자식 클래스에서 오버라이딩(재정의)가 필요한 추상 메소드를 가지고 있어야함.

 

27. 인터페이스(Interface)란?

인터페이스는 모든 메소드가 구현부가 없는 추상 메소드로 이루어진 클래스. 쉽게 이해한다면 밑그림이 없는 설계도의 개념이랄까...? 인터페이스는 하위 클래스에 특정한 메소드가 반드시 존재하도록 강제해야함. 자동으로 final static 변수가 적용되지만 생략이 가능하다.

 

28. 인터페이스를 사용하는 이유는?

팀 단위 작업시 개발코드 부분과 객체가 서로 통신하는 접점 역할을 지원하게 되는데, 이는 개발코드에서는 객체의 내부 구조를 모르더라도 인터페이스의 메소드 명만 알고 있으면 되기 때문. 이를 통해 얻을 수 있는 장점은 해당 메소드를 통해 나오는 결과물을 알 고 있기 때문에 다른 팀의 작업을 기다리지 않아도 되며, 객체가 수정 될 경우에도 코드 부분은 따로 수정하지 않아도 된다.

 

29. 프로세스(Process)와 쓰레드(Thread)의 차이점은?

프로세스: OS가 메모리 등의 자원을 할당해준 실행중인 프로그램을 가리키며, 이떄의 프로세스는 서로 메모리 공간을 독자적으로 가지기 때문에 서로 메모리 공간을 공유하지 못함. 공유하기 위해선 IPC(InterProcess Communication) 같은 방식이 필요.

 

쓰레드: 프로세스 내에서 프로세스의 자원을 가지고 실제로 일하는 SCV와 같은 역할을하며, 각 쓰레드는 독자적인 Stack 메모리를 가지고 그 외의 자원(메모리)는 프로세스 내에서 공유하게 됨.

※ 멀티 쓰레드: 하나의 프로세스에 하나 이상의 쓰레드를 생성하여 실행

 

30. 쿠키(Cookie)와 세선(Session)의 공통점과 차이점은?

공통점: 두개 모두 사용자의 데이터를 저장

차이점:

쿠키: Clien 컴퓨터에 저장되며 서버 요청시 네트워크를 타고 서버로 전달되기 때문에 보안에 취약

세션: 서버에 저장되며 브라우저 단위로 관리. 캐시에 비해 보안성이 좋다.

 

31. 접근제한자에 대해서 설명해보시오

private : 같은 클래스 내부에서만 접근 가능

public : 아무런 제약 없음. 어디서든지 사용 가능

protected : 같은 클래스 내부와 다른 패키지에서 상속을 받는 자식 클래에서 접근이 가능

default : 아무것도 선언하지 않은 상태로 같은 패키지 내부에서만 접근 가능

 

32. 오버로딩과 오버라이딩이란?

오버로딩 : 메소드 명은 동일하지만, 매개 변수 타입과 개수를 다르게하여 선언하는 방식

한 클래스내에 여러 개의 같은 이름의 메소드를 정의하는 것을 말함. 이렇게 메소드의 이름을 동일하게 만들면 프로그램의 가독성을 증가 시킬 수 있다는 장점이 있음.

특징: 메소드 이름이 같아야한다. / 리턴형이 같아도 되고 달라도 된다 / 파라미터 개수가 달라야한다 / 파라미터 개수가 같을 경우 데이터 타입이 달라야 한다.

 

오버라이딩 : 상속한 자식에서 부모의 메소드를 재정의하는 방식. 클래스간 같은 이름의 메소드를 정의하는 기술.

만약 자식 클래스가 부모 클래스에서 선언된것과 같은 메소드를 가진다면 메소드 오버라이딩이라고함.

특징: 오버라이드 할때는 메소드가 상위 클래스에 존재해야함. 메소드 이름이 같아야함. 메소드 파라미터 개수. 파라미터의 자료형이 같아야함. 메소드 리턴형이 같아야함. 상위 메소드와 동일하거나 내용이 추가 되어야함.

쉽게보면 부모로부터 받은 메소드의 로직을 입맛에 따라 변경하는 것. OOP의 특징인 다형성 중에 하나라 볼 수 있다.

 

33. 비전공자인데 IT를 공부하는 방법은?

 

34. DB를 설계해본 경험?

 

35. 스택과 큐의 개념

스택: 쌓아올리는 자료 구조. LIFO방식(Last In Fist OUT) / 후입선출

같은 구조와 크기 자료를 정해진 방향으로만 쌓을 수 있고, top으로 정한 곳을 통해서만 접근 가능

ex) 웹 브라우저 방문기록(뒤로가기) / 역순 문자열 만들기 / 실행 취소 등

 

큐: 줄을 서서 기다리는 자료 구조. FIFO방식(First In First Out) / 선입 선출

정해진 한 곳에서 삽입 삭제가 이루어지는 스택과 달리 큐는 한 쪽 끝에서 삽입 작업이. 다른 쪽 끝에서 삭제 작업이 양쪽을 이루어짐.

삭제연산이 이루어지는 곳을 프론트(front). 삽입 연산이 이루어지는 곳을 리어(rear)라고 함. 각각의 연산만 수행

ex) 은행 업무, 콜센터 고객 대기 시간, 프로세스 관리

 

36. Java로 웹을 많이 개발하는데 왜그럴까요?

플랫폼에 영향을 받지 않으므로 다양한 환경에서 사용 가능. 객체 지향 언어이기 때문에 유지보수가 쉽고 확장성이 좋음. 프로그램이 안정적이며, 풍부한 기능을 제공하는 오픈 소스.

 

37. 캡슐화(Encapsulation)란?

항상 은닉화를 전제하며, 관련이 있는 데이터 그리고 동작들을 하나로 묶어 요약하고 사용자에게는 내부적인 접근을 허용하지 않는 대신에 사용의 편의성을 제공해주는 것(데이터 보호의 장점 / 유지보수의 장점 / 사용자 편의성의 장점).

하나의 객체가 특정한 목적을 달성하기 위해 변수, 함수를 하나로 묶는 것. 클래스를 만들 때 목적을 명확하게 정하고 그에 따른 기능들을 관련성 있게 변수나 함수를 만드는 것.

 

38. 다형성이란?

Polymorphism: 상속을 받은 기능을 변경하거나 확장하는 것. 코드의 재사용성이 높아져 코드의 길이가 감소하고 유지보수가 용이해짐.

 

39. 자바의 인터페이스와 클래스의 차이점은?

클래스는 크게 일반 클래스와 추상 클래스로 나뉘어지는데, 추상 클래스는 클래스 내 추상 메소드가 하나 이상 포함되거나 abstract로 정의된 경우를 말함.

인터페이스는 모든 메소드가 추상 메소드인 경우 추상 클래스의 목적은 그 추상 클래스를 상속받아서 기능을 이용하고, 확장시키는데 있음. 반면 인터페이스는 함수의 껍데기만 있는데, 그 이유는 그 함수의 구현을 강제하기 위해서.

구현을 강제함으로써 구현 객체의 같은 동작을 보장 할 수 있음.

 

40. 메소드란?

필드가 물체의 상태라면, 물체의 행동에 해당하는게 메소드. 자동차는 이름과 번호가 있지만, 자동차는 앞으로 전진 할 수도 뒤로 후진 할 수도 있음.

728x90

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

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