면접

· 면접
AOP에 대해서 설명해주세요. AOP(Aspect-Oriented Programming)는 관점 지향 프로그래밍을 의미한다. 우리는 여태까지 객체 지향 프로그래밍을 해왔을 것이다. 객체 지향은 책임과 관심사에 따라 클래스를 구분했다. 그래서 객체 지향으로 설계를 하면 응집도는 높아지고 결합도는 낮아지게 됐다. 그런데 각 클래스마다 공통된 기능들을 똑같이 가지게 되는 경우가 생기게 된다. 위 사진에서는 클래스 A, B, C가 각각 Logging, Security, Transaction을 전부 가지고 있다.(이 얼마나 비효휼적인가) 관점 지향 프로그래밍은 이렇게 독립적으로 분리하기 어려운 부가 기능들을 모듈화 시키는 방식을 칭한다. 사진처럼 공통으로 가지는 관심사를 횡단 관심사(Cross cutting co..
· 면접
직렬화가 무엇인지 설명해주세요. 그렇다면 직렬화 컬렉션에는 뭐가 있죠? 프로젝트에서 직렬화를 적용해본 경험이 어떤 것이 있나요? 진짜 뼈맞은 질문이었다. 내가 아는 직렬화는 "서버와 브라우저는 바이트 스트림으로 데이터를 주고 받는데 객체를 네트워크로 전송하기 위해 바이트 스트림으로 변환시키는 작업을 직렬화라고 합니다" 라고 대답했었다. 이 대답이 틀린 말은 아니다. 근데 나는 직렬화라는 개념이랑 JSON이라는 개념에서 충돌이 일어났었다. 직렬화 직렬화(Serialize)는 자바에서 사용되는 Object나 Data를 다른 자바 시스템에서도 사용이 가능하도록 바이트 스트림 형태로 변환시키는 기술을 말한다. 반대로 바이트 스트림 형태의 데이터를 자바 시스템에서 사용하도록 Object나 Data로 변환하는 기술..
· 면접
String a = "abc" 라고 만든 변수가 있고, String b = new String("abc") 라고 만든 변수가 있습니다. 이 두 개를 '==' 으로 비교하게 되면 false가 나오는데 왜 그런 건가요? 되게 간단한 질문이라고 생각한다. 기본적으로 String에서 == 비교와 equals()로 비교를 했을 때 차이점을 알고 있냐는 질문과 유사하다. 우선 자바 메모리 구조가 어떻게 되는지 사진으로 알아보자. String a = "abc"; 리터럴로 a라는 변수에 값을 할당했다. 이렇게 하면 스트링 풀에 "abc"라는 값이 생성되기 된다. 새로운 그 다음 새로운 값을 만들어서 비교해보면 String a = "a"; System.out.println(a.hashCode()); String c = ..
· 면접
최근에 SSAFY를 통해 한 기업에서 면접을 보게 되었다.풀스택을 뽑는 자리였고 코딩테스트를 통과해서 1차 면접을 진행했는데, 백엔드 위주로 구성된 포폴과 대답으로 기술 면접은 백엔드 위주로 들어왔다. 근데 질문에 대답을 못했던 부분이 많았어서 이번에 받은 질문들을 정리해보려고 한다. 1. 불변 객체가 무엇인가요?내가 아는 불변 객체는 final을 이용해서 값을 변경하지 못하도록 만드는 객체를 의미한다고 생각했다.그런데 이런 대답을 원하는 느낌이 아니었다... 불변 객체(Immutable Object)한번 객체를 생성하면 그 상태를 바꿀 수 없는 객체를 의미한다. 반대로는 가변(mutable) 객체가 존재한다.불변 객체는 read-only 메서드만 제공하며, 객체의 내부 상태를 제공하지 않거나 방어적 복..
indeep
'면접' 카테고리의 글 목록