// 에드센스

자바는 버전별로 어떤 차이가 있나요?

  • 1.5
    • Generic 도입
    • Enum 도입
    • Annotation 도입
  • 1.6
    • G1GC를 테스트용으로 사용하도록 추가함
  • 1.7
    • 다이아몬드 오퍼레이터(<>) 도입
      • 변수선언시 동일한 타입으로 선언하고 싶다면 타입 명시하지 않아도 되고, <>로만 사용하면 됨
  • 1.8
    • 람다식 도입
    • 디폴트 메서드 도입
    • 옵셔널 도입
    • 스트림 도입
  • 9
    • java.net.http 패키지 도입
    • 스트림 api 추가됨
    • 인터페이스에서 private 메서드 사용 가능
    • try with resources 도입
  • 10
    • var 키워드 도입 -> 로컬변수 타입추론
  • 11
    • String, File API 개선
    • 람다식 파라미터로 var 사용가능하도록 개선
  • 12
    • Switch문 개선 "->"사용하는 식으로
  • 13
    • Switch문이 값을 return할 수 있도록 yield 키워드 추가
    • 줄바꿈된 문자열을 자동으로 선언할 수 있는 문법 (""" 어쩌구 저쩌구 """)
  • 14
    • record 타입 추가
    • NPE 에러내용이 더욱 상세하게 나옴
  • 15
    • sealed class
      • 다른 클래스가 상속을 받지 못하도록 제한하는 클래스
  • 16
    • OpenJDK 버전 관리가 Mercurial에서 Git으로 바꾸미
  • 17
    • Pattern Matching for switch
     

 

  • 18
    • default CharSet이 UTF8로 바뀜
    • 기존에는 런타임 환경에 따라 알아서 선택됐었음

자바 Stream API에 대해 설명해주세요

  • 자바8부터 추가된 기능
  • 일련의 데이터의 흐름을 쉽게 처리할 수 있게 도와주는 기능
  • 컬렉션(배열포함)의 요소를 함수형 연산(람다함수)을 통해 하나씩 참조하며 처리할 수 있게 도와주는 반복자

 

Stream API의 특징을 알려주세요

  • 원본 데이터를 변경하지 않는다
  • 일회용이다 -> 한번 사용이 끝나면 재사용 불가 -> 닫힌 스트림 사용시 IllefalStateException 발생
  • 내부 반복으로 작업 처리 -> for, while과 다르게 반복문법을 내부에 숨기고있기에 간결하고 안전한 코드

 

Stream API의 처리 단계를 알려주세요

  • 생성
    • Stream 객체를 생성하는 단계
  • 가공
    • 중간 데이터를 연산하는 과정
  • 결과만들기
    • 가공된 데이터를 원하는 형태로 출력함

TBD...

배열의 중복제거를 위한 방법을 알려주세요

  • Set을 사용
    • Set에 넣으면 중복제거됨
  • ArrayList를 사용
    • ArrayList의 contain을 사용하여 중복확인 후 중복이 제거된 새로운 리스트 생성
  • Stream의 distinct() 사용

자바 컬렉션에 대해 설명해주세요

  • 데이터의 집합
  • 자료구조들을 자바 클래스로 구현해둔 것
  • C에서는 LinkedList를 사용하려면 직접 코드짜야하지만
  • 자바에서는 컬랙션을 인스턴스화하면 된다

 

컬렉션의 장점은 뭐죠?

  • 표준화되어있기에 재사용성이 높다
  • 검증된 성능과 품질
  • 이미 구현되어있는것을 갖다쓰는거기에 편리

 

컬렉션은 어떻게 구성되어있죠?

 

  • 컬랙션 프레임워크는 크게 2개로 나뉜다
    • 컬렉션 인터페이스
    • 맵 인터페이스
  • 맵이 따로인 이유는
    • 두개의 데이터를 묶어서 한쌍으로 다루기에

 

Iterator 인터페이스는 뭐죠?

  • 컬렉션 인터페이스들보다 상위 최상위 인터페이스
  • 이터레이터 객체를 관리하는 인터페이스

https://inpa.tistory.com/entry/JCF-%F0%9F%A7%B1-Collections-Framework-%EC%A2%85%EB%A5%98-%EC%B4%9D%EC%A0%95%EB%A6%AC

 

 

MVC 패턴에 대해 설명해주세요

  • 디자인 패턴중에 하나다
  • Model, View, Controller

  • 사용자가 Controller 조작
  • Controller는 Model에서 데이터를 가져옴
  • View를 제어하여 사용자에게 전달
  • Model이란?
    • DB, 변수, 상수 등의 데이터
  • View란?
    • 텍스트박스, 체크박스 등 유저 인터페이스
    • 출력을 담당
    • 사용자들이 보는 화면
  • Controller란?
    • 사용자와 데이터를 연결하는 다리역할
    • 사용자가 무언가를 클릭하거나 수정하는 이벤트를 처리하는 부분
  • MVC 패턴을 사용해야하는 이유
    • 각각 기능에 집중할 수 있다
    • 확장성 유연성 증가

객체지향에 대해 설명해주세요

  • 객체란? -> 현실에 존재하는 대상
  • 프로그래밍에서 필요한 데이터를 추상화시켜 상태행위를 가진 객체를 만들고
  • 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법론

 

객체지향의 장단점이 뭐죠?

  • 장점은
    • 코드 재사용성이 좋다. 상속을 통한 확장도 가능
    • 유지보수가 쉽다. 절차지향에서는 일일이 찾아서 수정해야하지만, 객체지향에서는 클래스 내부를 보면 된다
    • 대형 프로젝트에 적합하다. 클래스단위로 모듈화 가능이기에 협업에 용이
  • 단점은
    • 개발속도가 상대적으로 느리다
    • 설계하기 쉽지 않다

 

클래스와 인스턴스가 뭐죠?

  • 클래스는
    • 대상의 속성과 행위를 변수와 메서드로 정의한 것
  • 인스턴스는
    • 정의한 클래스를 실제 메모리에 할당시키는 것

 

객체지향의 특성은 뭐가있죠?

  • 캡슐화
    • 클래스라는 캡슐에 속성과 행위를 묶고, 외부로부터 보호하는 것
      • 데이터 보호
      • 데이터 은닉 -> 필요한 부분만 노출
    • 접근제어자
    • 게터, 세터 -> 결합도를 낮출 수 있다
  • 상속
    • 기존 클래스를 재활용하여 새로운 클래스를 만드는 것
    • 속성과 행위를 물려받음
    • 중복을 제거하고 필요한 부분만 수정할 수 있다
  • 추상화
    • 객체지향 관점에서 클래스를 정의하는 것
    • 객체의 본질적이고 공통적인 부분만 추출하여 정의하는 것
      • 추상클래스
      • 인터페이스
  • 다형성
    • 객체의 속성이나 행위가 상황에 따라 여러가지 형태를 가질 수 있는 것
    • 상위클래스의 참조변수가 하위클래스 객체를 참조하는 것
      • 오버로딩
      • 오버라이딩
        • 오버로딩 오버라이딩처럼 메서드가 상황에따라 다르게 동작할 수 있고
      • 아래 사진처럼 상위클래스 변수가 하위클래스 변수를 받을 수 있는것
      • 이것이 다형성

 

 

 

참고:

https://www.codestates.com/blog/content/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8A%B9%EC%A7%95

 

객체 지향 프로그래밍의 4가지 특징ㅣ추상화, 상속, 다형성, 캡슐화 -

객체 지향 프로그래밍은 객체의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을 의미합니다. 객체 지향 프로그래밍의 기본적인 개념과 그 설계를 바르게 하기 위

www.codestates.com

 

+ Recent posts