본문 바로가기
[개발] 프로그래밍/Web, Spring, Java

백엔드 면접 기초 질문 답변(21~35)

by 안산학생 2021. 2. 5.

▲ 필기 원본


 

21. 람다식이란 무엇인가?

식별자 없이 실행이 가능한 함수입니다. 함수인데 함수를 따로 만들지 않고 코드한줄에 함수를 써서 그것을 호출하는 방식입니다. 자바 8부터 지원하고 코드가 간결해 가독성이 좋다는 것이 장점입니다. 그러나 람다식으로 만든 함수는 재사용이 불가하고 디버깅이 까다롭다는 단점이 있습니다.

자바 8부터 지원하는 것 : 람다식, Optional, Stream

22. 힙과 스택의 차이점

스택은 정적메모리를 사용하여 컴파일 시 크기가 정해져있습니다. 힙은 동적메모리를 사용하여 런타임시에 메모리영역을 원하는 크기로 잡을 수 있다는 점이 큰 차이점 입니다.

 

23. TCP와 UDP 차이점

TCP는 연결형 서비스를 지원하는 전송계층 프로토콜이며 인터넷환경에서 주로 사용됩니다. 호스트간 신뢰성있는 데이터전달과 흐름제어 및 혼잡제어 등을 제공합니다. 예로 전이중, 점대점 서비스가 있습니다.

UDP는 비연결형 서비스를 지원하는 전송계층 프로토콜이며 인터넷상에서 서로 정보를 주고 받을 때, 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜입니다. 신뢰성이 낮지만 TCP의 핸드쉐이킹 같은 설정이 필요하지 않습니다. TCP보다 안정성은 떨어지지만 속도는 빠릅니다.

 

24. HTTP 프로토콜이란?

hppt는 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜입니다. 애플리케이션 레벨의 프로토콜로 TCP/IP위에서 작동합니다. http는 어떤 종류의 데이터도 전송할 수 있도록 설계되었습니다.

 

25. SQL injection 막는법

입력값에 대한 유효성 검사를 해주는 방법과 저장 프로시저를 사용하는 방법이 있습니다. 저장 프로시저는 사용하고자하는 쿼리에 미리 형식을 지정해 보안성을 높일 수 있습니다.

 

26. 데이터베이스 설계부터 구현까지

전체 프로세느는 요구분석, 개념적 설계, 논리적 설계, 물리적 설계, 구현입니다. 먼저 사용자의 DB 사용목적을 파악하고 요구조건 명세서를 작성합니다. 이후 트랜젝션 모델링과 개념 스키마 모델링을 수행하여 ER그램을 그리고 개념스키마를 설계합니다. 논리적 설계에서는 DBMS에 논리적 스키마를 설계하고 트랜젝션 인터페이스를 설계합니다. 그리고 설계된 DB를 실제 시스템 상에 구현하는 단계까지 입니다.

 

27. DB 쿼리 테스트

 

28. 스프링은 무엇인가?

스프링은 자바플랫폼을 위한 오픈소스 어플리케이션 프레임워크로서 동적인 웹사이트를 개발하기 위해 여러가지 서비스를 제공합니다. 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고 조립해줍니다.

 

29. 프레임워크의 특징

프레임워크는 구체적이며 확장 가능한 기반코드를 가지고 있으며, 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성되어있습니다. 장점으로는 구조화, 추상화, 재사용성입니다. 좀 더 구조적이고 안정적이면서 유지보수가 쉽고 확장성이 뛰어나게 하기 위해 생겼습니다.

 

30. IOC, DI, AOP (스프링특징)

IOC (제어의역행) : 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 의미합니다. 개발자는 필요한 부분을 개발해서 '끼워넣기'의 형태로 개발하고 실행됩니다. 최종 호출이 개발자가 아닌 프레임워크 내부에서 결정되는대로 이뤄지게 되는 것을 의미합니다.

DI (의존성 주입) : IOC가 일어날 때 스프링이 내부에 있는 객체들간의 관계를 관리할 때 사용하는 기법입니다. 의존성 주입은 말 그대로 의존적인 객체를 직접 생성하거나 제어하는 것이 아니라, 제어의 역행으로 특정 객체에 필요한 객체를 외부에서 결정해서 연결시키는 것을 의미합니다.

AOP (관점지향프로그래밍) : 기능을 핵심비즈니스로직과 공통모듈로 구분하고 핵심 로직에 영향을 미치지 않고 사이사이에 공통 모듈을 효과적으로 잘 끼워넣도록 하는 개발입니다. 공통모듈(보안 인증, 로깅 같은 요소 등)을 만든 후에 코드 밖에서 이 모듈을 비즈니스 로직에 삽입하는 것이 바로 AOP적인 개발입니다. 코드 밖에서 설정된다는 것이 핵심입니다.

 

31. 인터셉터란? 어디에 사용되는가?

 

32. 스프링 시큐어리티란?

스프링 기반의 어플리케이션의 보안(인증과 권한, 인가)을 담당하는 스프링 하위 프레임워크입니다. 주로 서블릿 필터와 이들로 구성된 필터체인으로의 위임모델을 사용합니다. 그리고 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 생성하지 않아도 됩니다.

 

33. 세션과 쿠키의 차이점

쿠키는 클라이언트의 로컬에 저장되는 키와 값의 작은 데이터입니다. 텍스트 형식으로 저장되며, 브라우저 종료시에도 로컬에 남아있고 도메인당 20개, 쿠키당 4kb의 제한이 있습니다.

세션은 일정시간동안 같은 브라우저로 들어오는 일련의 요구사항을 하나의 상태로 보고 그 상태를 유지하는 기능입니다. 서버에 오브젝트 형식으로 저장되며 브라우저 종료 시 사라집니다.

 

34. 부트스트랩이란?

프론트엔드 개발을 빠르고 쉽게 할 수 있는 프레임워크입니다. 반응형이며 HTML, CSS, JS에 템플릿 요소들을 미리 정의해놓은 것입니다. 깃 허브 오픈소스로 활용가능하며, 상업적으로도 이용가능합니다.

 

35. Git을 쓰는 이유와 깃과 깃허브의 차이점

git은 형상관리 도구 중 하나입니다. 버전관리 시스템이라고도 합니다. Git은 소스코드를 효과적으로 관리할 수 있게 해주는 무료 공개 소프트웨어입니다.

git과 SVN의 차이점은 git은 분산형 관리 시스템입니다. SVN은 중앙서버에 소스코드와 히스토리를 저장하는 반면, git은 여러 PC와 저장소에 분산해서 저장합니다. 그래서 중앙서버에 장애가 발생해도 커밋과 복원이 가능합니다. 사본을 로컬에서 관리해 git이 SVN보다 빠릅니다.

gitHub는 local에서 관리한 소스코드를 업로드하고 공유할 수 있는 공간입니다.

 

댓글