CS 면접 준비 17

영속성 컨텍스트 란?

💡영속성 컨텍스트( Persistence Context )→ 데이터베이스와의 상호작용을 관리하는 환경을 의미한다.→ 엔터티 객체의 생명주기를 관리하고, 데이터베이스와의 연결을 통해 객체의 상태를 유지한다.💡엔터티 매니저( Entity Manager )→ 영속성 컨텍스트에 접근하고 이를 관리하는 인터페이스이다.→ 엔티티의 객체를 영속화( persist ), 조회( find ), 삭제( remove ), 수정을 할 수 있다. 그림을 보면,EntityManagerFactory에서 엔터티 매니저를 생성한다.앤터티 매니저가 생성되면 자동으로 영속성 컨텍스트가 생성된다.이를 통해 애플리케이션과 데이터베이스 사이의 객체를 보관하는 눈에 보이지 않는 하나의 박스개념이 생겼다고 볼 수 있다. 엔터티의 객체를 생성하였..

CS 면접 준비 2025.01.24

async와 await

async와 await를 알기 전에 동기, 비동기 개념부터 알아야 한다.동기( Synchronous )와 비동기 ( Asynchronous )동기→ 어떤 작업을 실행할 때, 전에 했던 작업이 끝내기를 기다리는 방식을 의미한다.비동기→ 어떤 작업을 실행할 때, 전에 작업이 안료 되지 않았더라도 작업을 실행하는 방식을 의미한다. async와 await JavaScript에서 비동기 프로그래밍을 더 쉽게 작성할 수 있도록 도와주는 키워드이다. async→ 함수 앞에 붙여서 해당 함수가 비동기 함수임을 나타내는 키워드이다.await→ async 함수 내에서만 사용되며, Promise가 처리될 때까지 코드 실행을 일시 중지한다. async function processData() { try { ..

CS 면접 준비 2025.01.23

정규 표현식 이란?

💡정규 표현식 ( Reqular Expression)→ 문자열에서 특정 패턴을 찾거나, 대체하거나, 검증하는 데 사용되는 강력한 도구이다.→ 텍스트 처리에서 매우 유용하다.예를 들어, 이메일을 입력할 때 @를 안넣거나 이메일 형식에 맞지 않으면 경고창이 뜨는 것을 확인할 수 있다.정규 표현식은 주로 패턴을 검색하거나 유효성 검사할 때 자주 사용된다.코드로 보면,^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$이 정규 표현식은 일반적인 이메일 주소 형식을 검증한다.예를 들어, jjong0425@tistory.com은 유효하지만, jjong0425.com과 같은 형식은 유효하지 않다. ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d]{8,}$이..

CS 면접 준비 2025.01.22

유효성 검사 란?

💡유효성 검사( Validation )→ 데이터가 특정 기준이나 규칙을 충족하는지 확인하는 과정이다.→ 데이터의 정확성과 신뢰성을 보장한다.예를 들어, 회원가입을 할 때 아이디 중복검사를 하거나비밀번호를 설정할 때 어떠한 규칙(대문자 필수, 특수문자 필수 등)에 따라 작성해야 되는 등 다양한 것이 있다.📌유효성 검사의 유형1. 클라이언트 측 유효성 검사→ 사용자의 브라우저에서 실행되어 데이터를 입력할 때 즉시 피드백을 제공한다.장점 : 서버의 부하를 줄일 수 있다.단점 : 브라우저의 개발자 도구(F12)를 사용하여 우회할 수 있어, 보안에 취약하다.2. 서버 측 유효성 검사→ 서버에서 데이터를 처리하기 전에 검사하여 데이터베이스에 저장되기 전에 데이터를 검증한다.장점 : 브라우저에서 우회가 불가능해 ..

CS 면접 준비 2025.01.22

인증과 인가 란?

💡인증( Authentication )→ 사용자가 주장하는 신원을 확인하는 과정이다.→ 즉, 사용자가 시스템에 접근할 수 있는 권한이 있는지를 확인하기 위해 사용된다. 예를 들어, 로그인화면에서 사용자 아이디와 비밀번호를 입력해서 인증을 받는 과정이다.생체 인식을 통해서 사용자의 신원을 파악하는 과정이다.💡인가( Authorization )→ 인증된 사용자가 특정 자원이나 기능에 접근할 수 있는 권한을 부여하는 과정이다.→ 즉, 사용자가 어떤 작업을 수행할 수 있는지를 결정하는 단계이다. 예를 들어,특정사용자에게 관리자 권한을 부여하여 시스템 설정을 변경할 수 있도록 하는 과정이다.어떤 사용자에게는 읽기 권한만 부여하고 수정이나 삭제 권한은 부여하지 않는 경우이다. 특성인증( Authenticatio..

CS 면접 준비 2025.01.21

싱글톤이란?

💡싱글톤( Singleton )→ 단 하나의 유일한 객체를 만들기 위한 디자인 패턴이다.→ 메모리 절약을 위해, 그 객체에 대한 전역 접근을 제공하는 패턴이다.대표적으로, 데이터 연결 관리, 로그 관리, 네트워크 통신 등에 사용된다.싱글톤을 구현하는 것은 단순하다.싱글톤을 적용하려고 하는 클래스의 생성자에 private을 활용하면 된다.public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { instance = new Singleton..

CS 면접 준비 2025.01.21

쿠키와 세션이란 ?

사람들은 로그인을 하고 다른 페이지를 넘어가거나 로그인 정보를 입력 안 해도 접속이 되는 경험들이 다들 있을 것이다.이런 부분들이 쿠키랑 세션이 있기 때문에 발생하는 것이다. 💡쿠키→ 웹 브라우저와 서버 간의 상태 정보를 저장하고 관리하기 위한 작은 데이터 조각이다.→ 클라이언트(브라우저)에 저장이 된다.클라이언트 측에서 서버에 요청을 보내면 서버는 쿠키와 함께 응답을 한다.이후 클라이언트에서 쿠키를 저장한다음, 동일한 서버에 재요청을 할 때 저장된 쿠키를 활용한다. 📌쿠키의 목적세션관리로그인 상태 유지, 장바구니 정보 저장 등사용자 추적웹사이트 방문 기록, 사용자 행동 분석 등개인화사용자 선호도에 따라 콘텐츠를 맞춤화 ✳️쿠키의 한계보안성에 취약하다 - 클라이언트에 저장하여 쿠키를 탈취당할 수도 있..

CS 면접 준비 2025.01.21

DI(의존성 주입)의 4가지 방법

앞서 말했듯이,DI( Dependency Injection )은 객체 사이의 의존도를 낮추기 위한 디자인패턴이다.DI는 여러 가지 방법으로 구현할 수 있다.생성자 주입수정자 주입필드 주입메서드 주입💡생성자 주입( Constructor Injection )→ 객체를 생성할 때 생성자를 통해 의존성을 주입하는 방법이다.객체가 생성된 후에는 의존성을 변경할 수 없다.생성자를 통해 의존성이 명확하게 드러나 가독성이 좋다.public class UserService { private final UserRepository userRepository; public UserService(UserRepository userRepository) { this.userRepository =..

CS 면접 준비 2025.01.20

DTO 란?

💡 DTO( Data Transfer Object )→ 말 그대로 데이터 전송 객체를 의미한다.→ 데이터의 구조를 정의하고, 여러 데이터 필드를 하나의 객체로 묶어 전송함으로써 데이터 전송의 효율성을 높입니다.※계층이란그림과 같이 3가지 계층으로 구성되어 있다.presentation layer : 사용자와의 상호작용을 처리하고 데이터를 시각적으로 표현합니다.business layer : 애플리케이션의 핵심 비즈니스 로직을 구현하며,  프레젠테이션 레이어와 데이터 액세스 레이어 간의 중재 역할을 합니다.data access layer : 데이터베이스와의 상호작용을 관리하며, 비즈니스 레이어에 필요한 데이터를 제공합니다. 📌DTO 설계원칙데이터는 일관성을 가져야 한다.오직 데이터 전송만을 하며, 비즈니스..

CS 면접 준비 2025.01.20

ORM 이란?

💡ORM( Object-Relational Mapping )→ 객체프로그래밍의 객체와 관계형 데이터베이스를 자동으로 매핑해 주는 기술이다.→ SQL쿼리를 사용하지않고도 객체를 통해 데이터베이스를 조작할 수 있다.주요 ORM 프레임워크 Java: Hibernate, JPAPython: SQLAlchemy, Django ORMNode.js: Sequelize, TypeORM. NET: Entity Framework예를 들어,sql = "SELECT * FROM users WHERE age > 20" cursor.execute(sql)위에 코드는 sql문을 사용한 코드이다.users = User.query.filter(User.age > 20).all()이렇게 sql문을 사용하지 않고도 객체를 통해 데이터..

CS 면접 준비 2025.01.16
LIST