[Full] 웹 개발자 CS 학습 기록하기

김현수·2024년 3월 29일
0

WEB

목록 보기
14/19

⭐ 웹 개발자 CS 학습



Q. 정적 메소드로만 구성된 클래스와 싱글톤 클래스의 차이점은?

  • 정적 메소드가 있는 클래스

    • 이 클래스는 인스턴스화 불가능
    • 객체를 생성하지 않고도 해당 메소드를 호출 가능
    • 객체 상태가 필요하지 않은 유틸리티 또는 도우미 메서드에 유용
public class Utility {
    public static void staticMethod() {
        System.out.println("This is a static method.");
    }
}
Utility.staticMethod();
  • 싱글톤 클래스

    • 클래스의 인스턴스를 하나만 생성하여 해당 인스턴스에 대한 전역 액세스 지점을 제공
    • 시스템 전체에서 작업을 조정하는 데 정확히 하나의 개체가 필요할 때 사용
public class Singleton {
    private static Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
Singleton singletonInstance = Singleton.getInstance();

Q. Java에서 인터페이스를 사용하는 이유는?

  • 메소드 구현을 지정하지 않고 클래스에 대한 계약을 정의하는 데 사용

  • 다중 상속의 형태를 가능하게 하고 다형성을 허용

  • 클래스가 특정 프로토콜을 준수하도록 보장하고 구성 요소 간의 느슨한 결합을 허용하는 데 사용

interface Animal {
    void eat();
}

class Dog implements Animal {
    public void eat() {
        System.out.println("Dog eats");
    }
}

Q. Method Overriding 기능이 실행되는 과정은?

  • 메서드 재정의는 하위 클래스가 해당 상위 클래스에 이미 정의된 메서드에 대한 특정 구현을 제공할 때 발생

  • 실행되는 메소드의 버전은 객체의 런타임 유형에 따라 결정

  • JVM은 동적 메서드 디스패치를 사용하여 런타임에 실행할 재정의된 메서드를 결정하고 가장 구체적인 버전의 메서드가 호출

class Animal {
    void speak() {
        System.out.println("Animal speaks");
    }
}

class Dog extends Animal {
    @Override
    void speak() {
        System.out.println("Dog barks");
    }
}

Q. 간단 용어 해석

  • Static

    • 인스턴스가 아닌 클래스에 포함
    • 객체 없이 메소드를 호출 가능
  • Volatile

    • 변수 값이 다른 스레드에 의해 수정됨을 나타냄
    • 변수 값이 항상 주 메모리에서 읽혀지도록 함
  • Transient

    • 필드 직렬화를 방지
    • 객체가 직렬화될 때는 미포함
  • Private

    • 선언된 클래스 내에서만 액세스 가능
  • Public

    • 다른 클래스에서 액세스 가능
  • Difference When Not Present (Default)

    • 액세스 한정자가 없으면 기본 액세스 수준은 패키지 전용(자체 패키지 내에서만 액세스 가능)

Q. 목록에서 중복 항목 제거

  • set 을 사용

list_with_duplicates = ['a', 'b', 'b', 'c', 'c', 'a', 'b', 'a', 'c', 'a']
list_without_duplicates = list(set(list_with_duplicates))
print(list_without_duplicates)  # ['a', 'b', 'c']

Q. 모든 사용자 HTTP 요청을 모니터링하고 필터링하는 공통 논리 구현

  • HTTP 요청을 모니터링하고 필터링하기 위한 공통 논리를 구현하려면 미들웨어(Node.js용 Express와 같은 프레임워크) 또는 인터셉터(프런트엔드 HTTP 요청용 Angular)를 사용

  • 이를 통해 요청과 응답을 전역적으로 처리, 수정, 기록 또는 필터링 가능


Q. Mutable/Immutable 에 대해 알고 있는지, 왜 사용하며, 구현 가능한지

  • Mutable 객체

    • 생성된 후 상태가 변경될 수 있는 객체
  • Immutable 객체

    • 일단 생성되면 상태를 변경할 수 없는 객체
  • 사용법

    • 불변성은 예측 가능성과 단순성 때문에 멀티 스레드 환경에서 선호
    • 부작용을 방지하여 코드를 더 쉽게 읽고 디버깅
  • 구현

    • 모든 필드를 최종으로 만들고 setter를 제공하지 않음으로써 불변 객체를 구현

Q. 세마포어/뮤텍스에 대해 알고 잇는지, 사용해 본 적이 있는지

  • 세마포어와 뮤텍스는 여러 스레드가 공유 리소스에 대한 액세스를 제어하는 ​​데 사용되는 동기화 기본 요소

  • 세마포어

    • 지정된 수의 스레드가 리소스에 액세스할 수 있도록 허용
  • 뮤텍스(상호 배제)

    • 한 번에 하나의 스레드만 리소스에 액세스하도록 허용
  • 용도

    • 경쟁 조건을 방지하고 스레드 안전성을 보장하는 데 사용

Q. 지역 변수가 HEAP 에 할당되어 있습니까?

  • 아니요, 지역 변수는 함수 내부에 선언된 변수를 저장하는 메모리 구조인 스택에 저장

  • 지역 변수가 참조하는 개체는 힙에 저장 가능


Q. 화살표 함수와 함수 개체 간 바인딩의 차이점

  • 화살표 함수

    • 자체 this 컨텍스트가 존재 X
    • 그들은 생성될 때 둘러싸는 컨텍스트의 'this' 값을 캡처
  • 함수 객체

    • 함수 호출 방법에 따라 달라지는 자체 this 컨텍스트를 가짐
// Arrow function
const print1 = () => console.log(this.value);

// Traditional function
function print2() {
    console.log(this.value);
}

const obj3 = { value: "obj3", getValue: () => obj1 };
const obj2 = { value: "obj2", getValue: () => obj3 };
const obj1 = { value: "obj1", getValue: () => obj2 };

// 함수에는 자체 'this'가 없으므로 동작이 변경되지 않습니다 
print1(obj1.getValue().getValue()) // undefined 


print2.call(obj1.getValue().getValue()); // obj3

Q. 델리게이션(위임) 패턴 이벤트

  • 이벤트 위임 패턴에는 개별 하위 요소에 여러 리스너를 추가하는 대신 상위 요소에 단일 이벤트 리스너를 추가하는 작업이 포함

  • 이벤트 버블링을 활용하여 더 높은 수준에서 이벤트를 처리하고 성능과 메모리 사용량을 향상


Q. 제어 컴포넌트란?

  • React의 컨트롤 컴포넌트는 폼 내의 입력 요소를 제어하는 ​​컴포넌트

  • 양식 데이터는 구성 요소 내의 상태에 의해 처리되므로 React 구성 요소가 양식 데이터에 대한 "단일 소스가 됨


Q. 디바운스 및 스로틀 사용

  • 디바운스

  • 함수가 실행될 수 있는 속도를 제한

  • 디바운스된 함수는 마지막 호출 이후 일정 시간이 지난 후에만 실행

  • 스로틀

  • 함수가 지정된 기간 동안 최대 한 번만 호출

profile
일단 한다

0개의 댓글