면접 대비

성기현·2024년 5월 18일

면접

목록 보기
1/1
post-thumbnail

풀스택 개발에서 가장 중요하다고 생각하는것?

전반적인 시스템을 이해하고 조율하는 능력입니다. 이는 프론트엔드와 백엔드, 그리고 데이터베이스 등 각각의 기술 스택이 어떻게 상호작용하는지를 이해하고, 이를 통합적으로 관리할 수 있는 역량을 의미합니다.

DDD 지향 코드 리펙토링을 어떻게 진행하는지?

도메인 주도 설계(DDD, Domain-Driven Design)를 지향하는 코드 리팩토링을 진행할 때는,
시스템의 복잡성을 도메인 모델을 중심으로 해결하고, 비즈니스 로직을 명확하게 표현하는 것이 핵심입니다

그리고 DDD란 소프트웨어 개발에서 도메인 모델을 중심으로 애플리케이션을 설계하는 방법론이에요

협업 시 의견 을 어떻게 공유?

다른 팀원의 의견을 적극적으로 경청하고, 다양한 관점을 수용하려고 노력합니다.
서로 다른 의견이 있을 때는 데이터나 명확한 근거를 바탕으로 논의하며, 팀의 목표를 최우선으로 고려합니다."

팀원 과의 갈등 해결 방법?

갈등이 발생했을 때는 먼저 팀원과 직접 대화를 시도합니다.
감정을 배제하고, 상대방의 입장을 경청하며 갈등의 원인을 명확히 파악하려고 노력합니다.
서로의 생각을 존중하는 대화를 통해 오해를 풀고, 공통된 해결 방안을 찾습니다.

이성적인 논리가 중요하다고 생각하는지??

네 매우 중요합니다 그 이유는 이성적인 논의는 감정적 반응 대신,
사실과 논리, 데이터에 기반하여 결정을 내리게 도와줍니다.

피드백을 줄때 어떻게 ??

피드백은 추상적이거나 모호하게 표현되지 않아야 합니다.
구체적인 상황이나 행동을 바탕으로 피드백을 제공하여,
상대방이 무엇이 문제였는지 또는 무엇이 잘 되었는지를 명확히 이해할 수 있어야 합니다.

프로젝트의 기여도 ??

팀의 목표를 명확히 이해하고, 내가 맡은 역할이 목표에 어떻게 기여하는지를 먼저 파악합니다.
이를 통해 내 작업의 우선순위를 팀 목표에 맞추고, 보다 전략적으로 움직입니다.

Spring AOP(Aspect-Oriented Programming)는 관점 지향 프로그래밍을 의미합니다. 이는 핵심 비즈니스 로직과 부가 기능을 분리하여 모듈화하는 방법론입니다. 예를 들어, 로깅, 트랜잭션 관리, 보안 등의 부가 기능을 핵심 로직과 분리하여 코드의 재사용성을 높이고 유지보수를 쉽게 합니다

1.객체 지향 언어란?

현실엔 사물들이 각각의 객체로 이루어져 있으며
발생하는 모든 사건들은 객체간의 상호작용이다.
이 개념을 컴퓨터로 옮겨 놓아 만들어낸 것


2.자바에서 객체란?

new 연산자를 통해서 메모리 영역에 생성된 것

3.Servlet 이란?

클라이언트의 요청을 처리하고

그 결과를 클라이언트에게 응답 하는 프로그래밍 기술

순수 자바 코드로만 이루어진 것

4.JSP 란?

JAVA 코드속에 들어가 있는 HTML 코드 (java server page)

5.JSP VS Servlet 차이점

JAVA 코드가 들어가 있는 HTML 코드

하지만 jsp 은 자바코드를 블록화 하여 <% %> 또는 <%= %> 가 들어가 있는 형태로

더 간단히 사용할수 있다


6. java의 특징

1.객체 지향 개념 특징 4가지 캡슐화,상속,다형성,추상화가 적용된 언어
2.가비지 콜렉터로 자동적으로 메모리 관리
3.멀티 쓰레드 지원
4.운영체체에 독립적


7. OOP 객체지향 프로그래밍의 특징

  1. 코드의 재사용성이 높음
  2. 직관적인 코드분석이 가능
  3. 개발속도 향상
  4. 상속을 이용한 장점 극대화
  5. 코드의 변깅에 용이

8.오버로딩, 오버라이딩 특징 설명

오버로딩은 같은 이름의 클래스를 여러개 생성한것,
단 매개변수의 타입이 다르거나, 갯수, 순서가 달라야된다

오버라이딩은 상속받은 자식 클래스가 부모 클래스의 메서드를 재정의 한 것
매개변수 동일 리턴타입 동일, 메서드명 동일


9. JDBC

Java Data Base Connect 의 약자로 JAVA의 언어를 통해 데이터 베이스에 접근 할 수 있는
프로그래밍을 의미


10. Get 방식과 Post 방식

Get
1.클라이언트에서 서버로 데이터를 보낼때 url 에 name=value이 보임
2.보안성이 떨어진다
3.길이에 제한이 있다
4.post 보다 전송속도가 빠르다

post
1.클라이언트에서 서버로 데이터를 보낼때 url에 name=value값이 보이지 않음
2.보안성이 좋다
3.길이에 제한이 없다
4.속도가 get방식보단 느리다
5.객체들의 값도 전송가능


11.Cookie , Session 사용 이유

우리가 현재 사용하고 있는 인터넷 HTTP 프로토콜은 연결 지향적인걸 버렸기 떄문에
새로운 페이지를 요청할때마다 새로운 접속이 이루어져서 이전 페이지와의 관계가 지속돠지 않는다
그래서 그 방문자의 상태를 유지하려고 사용함


12.Cookie

우리가 사용하고 있는 HTTP 프로토콜의 연결 지향적인 한계를 극복하기 위해 사용하는것
하지만 Cookie는 pc에 저장되는 정보기 떄문에 다른 사용자의 의해서 임의로 변경이 가능해서 보안성이 안좋긴함


보안성이 낮은 cookie 를 그럼에도 사용하는 이유는 모든 정보를 Session 에 담기게 하면
서버에 무리가 가기 떄문에


14. MVC 패턴

객체지향프로그래밍에서, MVC란 사용자 인터페이스를 성공적이며 효과적으로 데이터 모형에 관련 시키기 위한 방법론 또는 설계 방식중 하나이다.


15. 변수란?

메모리상에 값을 저장하기위한 공간 변할수 있어서 변수라 함


16. final 예약어의 작성 위치 별 의미

메서드앞 : 오버라이딩 불가
변수앞 : 값 변경 불가
클래스앞 : 상속불가


17. 생성자란?

new 연산자를 통해 객체 생성 시 필드 초기화 + 생성 시 필요한 기능을 수행하는 일종의 메서드
규칙 : 생성자명을 클래스명과 똑같이 지정해야됨


18. 기반 스트림과 보조 스트림의 차이

기반 스트림은 생성된 스트림 객체를 이용해 직접 입출력을 수행할 수 있는 스트림
보조 스트림은 기반 스트림의 성능을 향상 시킬 수 있다


19. 컬렉션의 종류와 각 특징

List : 순서 유지가됨 데이터 중복 허용
Set : 순서 유지 x 중복 허용 x
Map : k:v 형태로 저장 / value 값만 중복 허용


20.Interface, Abstract

Interface
추상메서드와 상수만을 선언 가능
Implements 키워드로 상속받음
다중 상속 가능
반드시 한 개 이상의 추상 메서드 생성

두 개의 특징
자신을 객체로 생성 불가능
하위 클래스를 제어하기 위해 사용


21. Framework vs Library 차이

가장 큰 차이는 흐름을 제어 할수 있냐 없냐의 차이다

프레임워크는 정해진 툴 안에서 개발자가


22. 접근제한자 종류

public - 같은 프로젝트 어디든 사용 가능
default - 같은 패키지 내에서만 가능
protected - 같은 패키지 , 상속 받은 것 만 가능
private - 같은 클래스에서만 사용 가능


23. 소켓 통신 (TCP/UDP)

TCP
-높은 신뢰성
-연결형 서비스 제공

UDP

  • 비연결형 서비스 제공
  • 신뢰성 낮음

24. DB 에서 Index 란??

데이터베이스 분야에 있어서 테이블의 동작 속도를 높여주는 자료 구조를 말함


25. String, StringBuilder, StringBuffer

String

  • new 연산자를 통해 생성되며 인스턴스 메모리 공간이 절대 변하지 않으므로
    수정,추가가 빈번하게 발생할 경우 StringBuilder 나 StringBuffer를 들음

StringBuilder

  • 비동기

StringBuffer

  • 동기

26. Mybatis

  • SQL 쿼리의 결과 매핑을 간단하게 처리할 수 있도록 하는 영속성 프레임워크

27. SEQ(Search Engine Optimization)

SEO: 검색 엔진 최적화는 (웹사이트나 웹페이지)가 검색 엔진 결과에서 높은 순위를 차지하도록 개선하는 과정입니다.
목적: 검색 엔진에서 높은 순위를 차지하여 더 많은 트래픽을 유도하고, 사용자에게 더 나은 경험을 제공합니다.


28 . RESTful

Rest : 네트워크 상에서 자원을 정의하고 자원에 대한 주소를 지정하는 방법론으로, 웹 서비스 개발에서 주로 사용됩니다.

RESTful: REST의 원칙을 준수하는 웹 서비스 설계 방식을 의미합니다.


29. CheckedException, UnCheckedException

CheckedException: 컴파일 시점에 반드시 예외 처리를 해야 하는 예외입니다. 예를 들어, IOException 은 파일 입출력 중 발생할 수 있는 예외로, 이를 처리하지 않으면 컴파일 오류가 발생합니다.

UncheckedException: 런타임에 발생하는 예외로, 명시적으로 처리하지 않아도 컴파일 오류가 발생하지 않습니다. 예를 들어, NullPointerException 은 객체가 null일 때 메서드를 호출하려고 할 때 발생합니다.


30. ArrayList 와 LinkedList 의 차이

ArrayList:

내부적으로 배열을 사용하여 데이터를 저장.
인덱스 기반 접근이 빠름 ( O(1) ).
중간에 데이터를 삽입하거나 삭제하는 작업이 느림 ( O(n) ).

LinkedList:

노드와 포인터를 사용하여 데이터를 저장.
데이터를 삽입하거나 삭제하는 작업이 빠름 ( O(1) ), 그러나 인덱스 기반 접근이 느림 ( O(n) ).
양방향 리스트의 경우 이전 노드로의 접근도 가능.


31 . 자바의 메모리 영역

Heap: 객체와 배열이 저장되는 공간입니다.
Garbage Collector에 의해 관리되며, 프로그램 실행 중 동적으로 할당됩니다.

Stack: 각 스레드마다 하나씩 존재하며, 메서드 호출 시 생성되는 프레임들이 저장됩니다.
각 프레임에는 지역 변수, 매개변수, 메서드 호출 정보 등이 포함됩니다.
메서드 호출이 끝나면 해당 프레임은 스택에서 제거됩니다.


32. JDK, JRE, JVM

JDK 는 자바 개발을 위해 필요한 도구들의 집합체라고 보면된다.
JRE 는 자바를 실행하기 위한 런타임 환경
JVM 은 클래스 라이브러리 환경등을 포함하고있다

JDK 는 개발자용으로 JRE를 포함한 모든 도구를 제공합니다.


33. == 와 equals 의 차이점

== 는 두 객체 자체를 비교하는 연산자이고 equals 는 객체 간의 내용을 비교를
하는 메서드


34 Math.round 의 뜻?

. Math.round 의 뜻 반올림
Math.floor 가장 가까운 정수를 찾아 소숫점을 버림


35. 문자열은 기본 데이터 유형인지?

아니다 . 기본 데이터 유형은 정수, 실수, 불리언 등등을 나타냄


36. 문자열을 반전 시키는 가장 좋은 방법?

StringBulilder 나 StringBuffer 의 reserver 를 이용하는것


37. 추상 클래스에 추상 메서드가 있어야하는지??

있을수도 있고 없을수도 있다


38. 일반 클래스와 추상 클래스의 차이점?

일반 클래스는 인스턴스(객체)를 직접 생성할수 있으나 추상 클래스는
직접 생성할수 없고 추상 메서드를 포함할수 있다.


39. JAVA 컨테이너 ?

객체들을 저장하고 관리하는 자료 구조


40. HashMap 과 TreeMap 의 차이점

정렬을 유지 하려면 TreeMap 아니면 HashMap


41. ArrayList 와 LinkedList의 차이점

ArrayList 는 인덱스 기반의 접근이 빠름 하지만 수정 삭제하는데 느림
LinkedList는 인덱스 기반의 접근이 느림 하지만 수정 삭제하는데 빠름


42. 배열과 목록 간에 어떻게 반환??

배열을 목록으로 = Array.asList()
목록을 배열으로 = List.toArray()


43. 대기열에서 poll() 과 remove() 차이점

둘다 똑같이 대기열에서 가장 앞 순위를 제거하지만

poll은 대기열이 비어있을경우 null을 반환
remove는 NosuchElementException 을 반환


44 . Iterator 뜻

컬렉션 요소들을 반복하면서 순차적으로 접근하기 위한 인터페이스


45. 반복자의 특징

컬렉션 내의 요소들을 순회하면서 접근하기 위한 방식


46. Reflection 이란 ??

Reflection은 실행 중인 프로그램의 구조를 분석하고 조작하는 데 사용하는 자바의 기능


47. 얕은 복사와 깊은 복사의 차이점??

얕은 복사는 객체를 복사할때 필드의 참조를 그대로 복사해서 복사하려는 객체의 상태에 영향을 줌
깊은 복사는 새로운 인스턴트를 복사하므로 영향을 x


48. jsp 의 네 가지 스코프

page : 현재 페이지 에서만 유효
request : 요청받은 페이지에서만 유효
session : 페이지를 닫으면 x
application : 그냥 유효


50. 싱글톤 패턴?

프로그램에서 정확히 하나의 객체가 필요할때 유용한것

private 를 통해 생성

private static 을 변수에 저장


51. 가비지 컬렉터가 뭔가요??

프로그램에서 더 이상 사용되지 않는 메모리를 jvm 이 삭제를 하는 것


52. 자바에서 reflection 이 뭔가요??

컴파일 할 때 구체적인 클래스를 알지 못해도 객체에 접근하여 검사하고 조작할수 있게 하는 것


53 . java 패키지란 무엇?

관련 클래스와 인터페이스들을 그룹화하는 방식

명명 충돌 방지
접근 보호 기능


54. lamda가 뭔가요??

java 8 에서 도입된 기능으로 메서드를 하나의 식으로 표현 해주는것


55 . 메모리 누수란 무엇이며 어떻게 java에서 처리합니까

더 이상 사용하지 않는 객체가 가비지 컬렉테에 의해 메모리에서 제거될 수 없는 상태


56. java에서 객체 복제를 구현하는 방법?

clone


57 . java 에서 클래스를 불변으로 만들기 위해 어떻게 함??

클래스를 final 로 선언
모든 필드를 private 로 선언
setter 메소드 제공 x
메소드가 오버라이딩 되게 x


58. string, stringbuffer, stringbuilder 의 차이점

string 은 new 생성자를 통해 인스턴스 메모리에 생성되며 절대 바뀌지 않는다

스트링 버퍼는 동기라는 특징을 가지고 있고 다중 스레드 환경에서 사용하기 위한 것

스트링 빌더는 비동기라는 특징을 가지고있고 단일 스레드 환경에서 사용하기 위한것

이 두개는 가변성의 특징을 가지고있어서 이 값들을 변경하게 되면

이 두개가 가지고있는 메모리의 값들이 변경되지만 string 객체는 새로운 인스턴스를

생성하게된다.


59. 어노테이션이 뭔가요??

어노테이션(Annotation)은 주로 데이터를 더 쉽게 이해하고 활용하기 위해 추가하는 주석이나 메타데이터를 의미합니다.


60. Synchronized: 멀티스레딩 환경에서 동기화를 위해 사용되는 키워드로, 동시에 여러 스레드가 공유 자원에 접근하지 못하게 합니다.


61. 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로, DI(Dependency Injection)와 AOP(Aspect-Oriented Programming)를 기반으로 하여 애플리케이션의 개발을 단순화하고 생산성을 높입니다.


62. Wrapper Class 기본 데이터 타입을 객체로 다룰 수 있도록 하는 클래스. 예: Integer, Double.


63. 제네릭 : 컴파일 시 타입을 체크하고, 클래스나 메서드가 다양한 타입을 처리할 수 있도록 하는 기능.

1개의 댓글

comment-user-thumbnail
2024년 5월 24일

정말 유용하네요 좋은 정보 얻어갑니다!

답글 달기