포큐(욕아님!) 개체지향 프로그래밍 및 설계 후기

포큐(욕아님!) 개체지향 프로그래밍 및 설계 후기

들어가기 앞서..

본격적인 후기 작성하기 앞서서 누가 후기를 찾아볼까?에 대해서 고민했었다.

  • 들으려는 사람
  • 들은 사람
  • 강좌를 만든 사람(?!)

그리고 경험상 후기를 읽을 때 하나의 후기뿐만아니라 여러 후기를 겸해서 읽게 될것이기에 많이 중복된 내용은 빼려고 노력했다. 마지막에 시험때 만들었던 문제 리스트도 있다. 들으려는 분은 이런걸 배우는지 확인하는 용도로, 다 들은 분은 복습하는 용도 정도 될거 같다.

POCU2500가 궁금하다면 여기!를 클릭해주세요

후기

포큐 아카데미의 수업은 정말 정말 잘 만들어졌다. 이런 이야기를 하기전 이미 나는 COMP2500까지 총 3편의 풀코스를 들었다. Pope

중간에 Fail은.. 회사일로 너무 바뻐 과제를 놓쳤기 때문이다.

한개는 얼리버드로 할인 받았다고 해도 약 300만원을 결제했다는 것은 최소한 나의 한에서 수업의 만족도가 매우 매우 높다는 걸 증명하는 것이다. (내돈내산입니다.)

수업 자체에 대해 길고 자세하게 적어봤자 대부분은 대충 읽을 것이기 때문에 한줄 요약을 하면 COMP2500는 주관성이 강한 개체지향 프로그래밍을 가장 객관적이게 알려주는 수업이다!

문제 리스트

대망의 문제 리스트이다. 천천히 읽어보고 얼마나 답할 수 있는지 측정해보면 좋을거 같다.

Java 언어의 기본 문법

  • Package 시스템을 사용하는 이유와 주의할점
  • 프로그램 시작시 명령어를 입력해보세요
  • 배포(jar)시 명령어를 입력해보세요 (manifest 파일 포함 빌드)
  • Manifest 파일에 필수로 들어가야할 것은?
  • 기본으로 import 되는 패키지는?
  • Java는 크로스 플랫폼인가? (최소 두가지 관점에서 예/아니요 설명)
  • 부호 없는 자료형 문제점
  • Java에서 유일하게 부호가 없는 자료형은?
  • 문자열은 몇 비트? 그 이유는?
  • “A” + “B” 혹은 문자열중 일부를 바꾸게 될 경우 내부적으로 어떻게 작동할까?
  • Package 시스템의 한계는? (3가지)
  • 모듈 시스템의 개념과 장점(4가지)
  • module-info.java에 정의되는 내용은? (2가지)

개체지향 프로그래밍(OOP)의 필요성

  • 데이터를 관리하는 방법의 발전 순서는? (3단계)
    데이터 -> ? -> ?
  • 배열 혹은 기본 자료형으로의 한계
  • 구조체의 한계
  • OOP는 사람은 세상을 물체의 집합이라고 인지한다고 하는데 물체(object)의 특성은? (2가지)
  • C에서 데이터와 함수를 묶는 꼼수는?

개체지향 프로그래밍

  • OOP는 매우 주관적이다. 주관성이 강한 분야에서 토론할때 피해야할 사람의 특징 5가지는?

OOP의 4대 특성

  • 4대 특성을 말하고 각각 특성에 대해서 설명하시오.

클래스와 개체

  • 클래스를 설명해보세요

참조형과 포인터

  • Java에서 Stack 메모리에 쌓이는?
  • Heal 메모리에 만들어지는 것은?

생성자

  • 선조건 후조건을 들어서 생성자를 제대로 사용하는 법을 설명하시오

접근 제어자(access modifier)

  • 접근 제어자를 사용해야 하는 이유는?
  • 패키지 접근 제어자가 유용한 경우 2가지는?

getter/setter 메서드

  • 함수를 통한 데이터 접근의 객관적인 장점 3가지
  • setter을 남발하게 될 경우 생기는 문제는?

캡슐화와 데이터 추상화

  • 캡슐화를 두문장으로 정리해보세요
  • 추상화를 한문장으로 정리해보세요
  • 추상화의 단점 2가지는?

유연성과 재사용성

  • 유연성이 좋은 코드가 최고일까? (3가지 관점에서 설명해보세요!)

정적(static) 멤버 변수 및 메서드

  • static을 사용했을 때 좋은 경우는?
  • java에서 개체를 생성하지 못하게 막는 방법과 다른 언어에서 제대로된 방법은?

싱글턴

  • 싱글턴 패턴이란?
  • 싱글턴은 하고 static이 못하는 것은?
  • 싱글턴의 생성 순서를 보장하는 방법 올바른 방법은?
  • 싱글턴 생성시 인자가 필요하다면? 어떻게 변형하는 방법은?

내포(nested) 클래스

  • 내포 클래스의 용도는?
  • 정적 내포 클래스와 비정적 내포 클래스의 차이점은?
  • 다음과 같은 비정적 내포 클래스(Reader)를 생성하려면? (코드로 작성) 내포1
  • 다음 코드를 읽고 문제점을 찾으시오! 내포2

상속

  • OOP에서 상속이란? (한줄로 요약)
  • 상속에서 부모와 자식이 있을 때 어느 개체부터 초기화를 할까요?
  • 부모 생성자를 호출하는 방법은?

RTTI(run time type identification) 기능

  • RTTI 기능이 무엇인가요?
  • RTTI이 가능한 이유는 무엇인가요?
  • instanceof연산자는 무엇이고 사용할때 주의할점은?
  • RTTI 기능의 단점

Object 클래스

  • Object 클래스에 대해서 설명

다중 상속

  • Java에는 다중 상속이 존재할까요?
  • 다중 상속의 위험성은?
  • 다중 상속이 발생하는 이유는?
  • Java에서 다중상속의 해결 방법은? (2가지)

(+a) OOP 또는 상속이 어려운 이유 (주의할점)

  • 사람이 상속이 어려운 이유는?
  • 상속을 이해하는 두가지 관점?

재사용성의 중요성

  • 프로그래밍에서의 의의 3가지와 각각의 중의할 점은?
  • 모델링 실력을 높이는 방법은?

상속 vs 컴포지션

  • 둘중 선택시 4가지 기준은?
  • 상속이 유리한 경우는?
  • 컴포지션이 유리한 경우는?

깊은 상속의 문제는?

  • has-a와 is-a의 차이는?

다형성이란? (한줄설명)

  • 오버라이딩이란?
  • 다형성의 장점

이른, 늦은 바인딩

  • 이른 바인딩이란?
  • 늦은 바인딩이란?
  • Java의 기본 동작은?
  • Java에서 이른 바인딩 하는 방법은?

Object class

  • toString()는?
  • equals()는? 주의할점은?
  • hashcode()는? 사용되는 곳은?

추상 메서드/클래스

  • 추상 메소드가 필요한 이유는?
  • 추상 클래스가 필요한 이유는?
  • 구체 클래스와의 차이점은?

인터페이스

  • 인터페이스를 다른 말로는?
  • 인터페이스의 접근 제어자는?
  • 클래스는 다중상속이 안되고 인터페이스는 되는 이유는?
  • 하지만 다중 인터페이스라도 생길 수 있는 문제는?
  • 인터페이스의 핵심은?

어노테이션

  • Java 어노테이션이란?

Object.clone()

  • 올바른 사용 방법은?

의존성이란?

  • 의존성에 대한 오해와 진실은?

결합도

  • 결합도란?
  • 결합도가 높다는 판단 기준은?
  • 결합도를 낮추는 방법 2가지는?

구현 vs 인터페이스

  • 구현 vs 인터페이스를 적절하게 사용하는 판단 기준은? (4가지)
  • 디커플링의 단점은? 3가지
  • 실용적인 인터페이스 사용 판단 기준은?

디자인 패턴

  • 디자인 패턴 학습지 주의 사항은?
  • 팩토리 메서드는? (장점은?)
  • 빌더 패턴는? (장점은?)
  • 플루언트 인터페이스란?
  • 빌더 패턴이 잘 못 사용된 예 그리고 해결 방법은?
  • 래퍼 어뎁터 패턴은? (사용 이유는?)
  • 프록시 패턴은? )(장점 단점은? (3가지 경우를 이야기!))
  • 프록시 패턴 문제점 그리고 해결 방안?
  • 책임 연쇄?
  • 옵저버, 구독 발행?
  • 옵저버 패턴의 메모리 누수가 발생 위험은?

예외

  • catch 블록 작성할때 주의 사항은?
  • checked와 unchecked의 차이는?
  • 예외의 단점은?
  • 예외를 절대 XXX용으로 사용하면 안된다! XXX는?
  • 오류상황을 처리 방법 4가지는?
  • 상황별 예외 처리 방법은?
    • 예측 + 수정 쉬운
    • 예측 + 수정 어려운
    • 예측 못함

SOLID 정신? (뜻과 비판)

  • SRP 단일 책임
  • OCP 개방 -폐쇄
  • LSP 리스코프 치환
  • ISP 인터페이스 분리
  • DIP 의존 역전
comments powered by Disqus