면접 준비 22

웹 서버 vs WAS 비교

웹 서버 (Web Server) 정적 리소스 제공 즉, 정적 파일인 HTML, CSS, JS, 이미지, 영상 etc. HTML 기반으로 동작 웹 서버의 종류: Nginx, Apache WAS (Web Application Server) 웹 서버 기능도 제공 즉, 정적 리소스도 제공 가능 프로그램 코드를 실행해서 비즈니스 로직 수행 Client Side Rendering (동적 HTML), REST Api 제공 서블릿, JSP, Spring MVC WAS의 종류: Tomcat, Jetty Web Server vs WAS 사실 Web Server와 WAS의 경계가 모호 WAS는 Web Server의 기능을 포함 또한, Web Server도 플러그인을 통해 로직 수행 가능 대체적으로 자바 웹 프로그래밍에서는 ..

면접 준비 2021.05.28

싱글톤(Singleton) 패턴

싱글톤 패턴 클래스의 인스턴스가 오직 1개만 생성되는 것을 보장하는 디자인 패턴 private 생성자를 통해 외부에서 임의로 new 키워드를 통해 객체 인스턴스를 사용하지 못하도록 방지 getInstance() 메서드를 통해서만 조회 가능하게 함으로써 항상 같은 인스턴스를 반환 싱글톤 패턴 코드 * 보다 많은 코드 예시: https://betterprogramming.pub/what-is-a-singleton-2dc38ca08e92 싱글톤 패턴 장점 TPS (Traffic Per Second)가 높은 웹 애플리케이션에서 고객 요청마다 새로운 인스턴스를 생성할 경우 메모리 낭비가 심각 -> 싱글톤 패턴을 적용할 경우 해당 문제 해결 가능 스프링 프레임워크 내에서는 스프링 컨테이너를 통해 고객의 요청이 들어..

면접 준비 2021.05.16

객체지향 설계 원칙: SOLID 법칙

개요 로버트 마틴이 제안한 좋은 객체 지향 설계의 5가지 원칙 SRP: 단일 책임 원칙 (Single Responsibility Pricinple) OCP: 개방-폐쇄 원칙 (Opened/Closed Principle) LSP: 리스코프 치환 원칙 (Liskov Susbstitution Principle) ISP: 인터페이스 분리 원칙 (Interface Segregation Principle) DIP: 의존관계 역전 원칙 (Dependency Inversion Principle) SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 함 변경이 있을 때 파급 효과가 적을 경우 SRP를 잘 따른 것 ex) 객체의 생성과 적용을 분리 OCP 개방-폐쇄 원칙 확장에는 열려 있으나 변경에는 닫혀 있어야 함 ..

면접 준비 2021.05.15

[Java] 정렬

Comparable vs Comparator Interface 자바는 정렬을 돕기 위해 Comparable 그리고 Comparator 인터페이스를 제공합니다. 공통점 두 인터페이스 모두 public 접근 변경자로 선언하기 때문에 모든 자료형을 담을 수 있습니다. 차이점 특성 Comparable Comparator 메서드 Comparable 인터페이스는 compareTo(Object a) 메서드를 사용 -> 개체가 하나 제공됨 (this) Comparator 인터페이스는 compare(Object o1, Object o2) 메서드를 사용 -> 개체가 두개 제공됨 정렬 사용처 Collections.sort(List) 메서드는 Comparable 타입을 가지는 객체들을 정렬할 때 사용 -> 기본 정렬 규칙 설..

면접 준비 2021.04.25

ios_base::sync_with_stdio(false); cin.tie(null); 구문을 추가해주는 이유

C++로 알고리즘을 풀 때 실행 속도를 높이기 위해 흔히 아래와 같은 구문을 작성해줍니다. ios_base::sync_with_stdio(false); cin.tie(null); 저 같은 경우 단순히 시간초과가 발생했을 때 남들이 위 코드를 작성하면 AC를 받을 수 있다고 하여 지속적으로 작성하고 있었는데, 어느 날 갑자기 원리가 궁금해져 찾아봤는데 내용이 흥미로워 오랜만에 포스팅을 작성합니다. ios_base::sync_with_stdio(false);의 장점 ios_base::sync_with_stdio 구문은 c의 stdio와 cpp의 iostream을 동기화시켜주는 역할을 하는데, 이 때 iostream과 stdio의 버퍼를 모두 사용하기 때문에 딜레이가 발생합니다. 따라서, ios_base::s..

면접 준비 2020.11.03

Call by Value vs Call by Reference

면접에서 아이스 브레이킹 차원으로 자주 나오는 문제였습니다. 면접 질문: Call by Value와 Call by Reference의 정의와 함께 장단점을 설명해주세요. C, C++에서 함수는 두 가지 방법으로 호출될 수 있습니다. 1. Call by Value2. Call by Reference 그리고 함수에 전달되는 매개변수를 실제 매개변수라고 부르고 함수가 전달받은 매개변수를 형식 매개변수라고 부릅니다.Call by Value이 매개변수 전달 방법에서, 실제 매개변수의 값은 형식 매개변수에 복사되고 두 유형의 매개변수는 서로 다른 메모리에 저장됩니다.따라서 함수 내에서의 변경은 실제로 전달된 실제 매개변수에 반영되지 않습니다.장점복사하여 처리하기 때문에 매개변수로 전달된 값이 보존이 되고 안전합니다..

면접 준비 2020.06.12

데이터베이스) DBMS 키 정리

회사 동기가 캠퍼스 리크루팅 때 모의 면접을 진행하면서 질문받은 내용을 정리해보겠습니다. 질문 내용: Candidate Key, Super Key, Primary Key에 대해 설명해보세요. 저는 질문 내용과 함께 키의 정의, 키의 필요성 그리고 보다 다양한 키에 대해서도 정리해보겠습니다. 각 키에 대한 예시는 키에 대한 개념을 설명한 뒤 예시 테이블을 통해 설명드리겠습니다. Key DBMS 키는 테이블 내 튜플(행)을 식별하기 위한 단일 속성 혹은 속성들의 집합을 말합니다. Key가 필요한 이유 1. 앞서 언급했듯이 키는 테이블 내 튜플을 식별해주는 역할을 합니다. 실제 서비스를 개발할 때, 테이블 내 수많은 데이터가 있을 수 있고 심지어 동일한 데이터들이 여러 개 들어있을 수도 있습니다. 키는 테이블..

면접 준비 2020.06.10

데이터베이스 쿼리 실행 순서

회사를 직접적으로 언급할 수는 없지만 데이터베이스 쿼리 실행 순서를 질문받은 적 있습니다. 코딩 테스트 난이도 정도의 쿼리 작성에는 어느 정도 자신이 있었지만 실행 순서는 한 번도 생각해본 적이 없어 당황하다가 면접관님의 도움으로 겨우 풀었던 기억이 나네요. 그래서 오늘은 쿼리 실행 순서를 정리해보고자 합니다. 1. FROM 과 JOIN 데이터 셋의 총양을 결정하기 위해 FROM 절과 JOIN 문이 먼저 실행됩니다. 여기에는 서브쿼리도 포함되며, 서브 쿼리가 실행될 때 모든 행(row)과 열(column)을 포함하는 임시 테이블이 생성될 수 있습니다. * 서브쿼리(Subquery): 쿼리 내에 있는 쿼리 (WHERE, FROM, SELECT 절 안에 들어가는 쿼리를 통칭하여 서브 쿼리라고 합니다.) 2...

면접 준비 2020.06.07