ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JavaSE 이론 정리
    면접 정리 2019. 2. 12. 06:01
    반응형

    Java의 공부와함께 기본적으로 알아야할 개념들?? ㅎㅎ

    면접에서도 묻는 개념들 모아봤습니다.

    아주 간단한 개념드롤 요약.

     

     

     

     

     

     

     

     

    Java SE

    1. JDK / JRE / JVM 

      ① JDK : (Java Development Kit) 자바 개발 도구 입니다.

          - JDK안에는 javac, javadoc 등이 포함되어 있습니다.

          - JDK를 설치하면 JRE가 설치되고, JRE 안에는 흔히 말하는 JVM을 있습니다. 

      ② JRE : (Java Runtime Environment) 자바 실행 환경 입니다.

          - JRE는 JVM이 자바 프로그램을 동작시킬 때 필요한 라이브러리와 파일들을 가지고 있습니다.

      ③ JVM : (Java Virtual Machin) 자바 가상 머신 입니다.

          - 자바 소스로부터 만들어진 자바 바이너리 파일을 실행할 수 있습니다.

       * JDK / JRE / JVM 에 대해 더 자세히 알아보기

     

     

     

     

    2. 객체 / 클래스 / 변수 / 메서드 / 생성자

      ① 객체 : 시스템의 기본단위이고, 속성과 기능으로 구성합니다.

      ② 클래스 : 객체를 만들어 내기 위한 설계도입니다.

      ③ 변수 : 객체의 속성 정보를 저장합니다.

      ④ 메서드 : 객체의 기능을 정의합니다.  

      ⑤ 생성자 : 객체 생성 시 호출되어 실행되는 클래스입니다. ▶ 객체 생성 시 필요한 정보를 전달 받기 위해 사용합니다.

     

     ** JAVA의 Class 구성요소 

          1) Package

          2) Import

          3) Class

          4) Instance variable

          5) Constructor

          6) Method 

     

     

     

     

    3. 객체지향 (Object-Oriented)

      - 시스템분석 설계 기법 중 하나입니다. ▶ 시스템의 기본 단위를 객체로 상정하고, 객체와의 관계를 중심으로 시스템을 분석,설계하는 기법입니다.

     

     

     

     

    4. 객체지향 프로그래밍 (OOP)

      - 객체 지향 개념이 적용된 프로그래밍입니다. 주요 개념으로는 크게 Encapsulation, Inheritance, Polymorphism 이 있습니다.

     

     

     

     

    5. instance variable / local variable / class variable

      ① instance variable : 객체의 정보를 Heap 영역에 저장합니다. 

      ② local variable : 메소드와 생성자에서 임시로 사용하는 변수로, Stack 영역에 저장합니다. 

      ③ class variable : instance variable에 static가 붙은 변수로 클래스가 로딩될 때 한번 method영역에 올라가고, 인스턴스를 생성하지않고 접근 가능합니다. 

     

     

     

     

    5. 메모리 구조 : stack / heap / method area

      ① class(method) area 에는 class meta 정보가 저장됩니다. 

      ② stack area는 local variable 이 저장됩니다

      ③ heap area는 instance variable 이 저장됩니다.

      * 메모리 구조에 더 자세히 알아보기

     

     

     

     

    6. Garbage Collection 

      - 자바의 특징 중 하나가 JVM이 메모리를 관리하는 것입니다.

      - Garbage Collector 는 Heap 영역 내의 Garbage를 찾고 처리하여 Heap영역에서의 메모리를 회수합니다.

     

     

     

     

    7. primitive data type / reference data type

      ① primitive data type : 자바의 기본형 데이터 타입으로 정수형, 실수형, 문자형, 논리형으로 구성됩니다.

      ② reference data type : 자바의 참조형 데이터 타입으로 객체를 참조하는 변수의 타입을 말합니다.

     

     

     

     

    8. 접근 제어자 종류와 특징 

      * public  ▶  protected  ▶ default  ▶  private

      ① public : 다른 패키지에서도 접근 가능합니다.

      ② protected : 같은 패키지에서 접근이 가능합니다. 단 상속 관계라면 다른 패키지에서도 접근이 가능합니다.

      ③ default : 같은 패키지에서 접근이 가능합니다.

      ④ private : 동일한 클래스에서 접근이 가능합니다.

      ▶ 객체의 로직을 보호하기 위해 멤버에 따라 외부의 접근을 허용하거나 차단할 필요가 있기 때문에 접근제어자를 사용합니다.

      * 접근제어자 더 자세히 알아보기 

     

     

     

    9. 배열정렬

     

     

     

     

    10. Encapsulation

      - 객체 지향의 특징 중 하나로 데이터와 데이터를 처리하는 함수를 하나의 단위로 묶은 것입니다.

      - 캡슐화를 통해 객체간의 응집도가 높아지고 결합도가 낮아져 프로그램의 생산선을 높일 수 있습니다.

      * Encapsulation 더 자세히 알아보기

     

     

     

     

    11. Inheritance

      - 자식 객체들의 공통적인 속성과 기능을 부모 객체에게 물려받아 재사용 하는 것입니다.

      - 상속을 통해 계층 구조를 형성하면 다형성(Polymorphism) 적용 환경이 됩니다.

     

     

     

     

    12. Polymorphism 

      - 하나의 소통방식으로 다양한 객체들이 각자의 방식으로 다양하게 동작하는 성질입니다

      - One Interface Multiple Implemantation

      - 부모 타입의 변수로 다양한 자식 객체를 참조 할 수 있습니다.

     

     

     

     

    13. Overloading / Overriding

      ① Overloading 

            - 동일한 이름으로 다양한 매개변수를 정의하는 프로그래밍 기법입니다.

            - 컴파일러는 매개변수가 다르면 다른 메서드로 인식합니다.

            - 메서드 오버로딩, 생성자 오버로딩이 있습니다.

      ② Overriding

            - 부모 클래스를 상속받은 자식 클래스에서 상속받은 부모 메서드를 자신에 맞게 재정의하는 것입니다.

            - 부모 메서드의 이름과 매개변수, 리턴 타입이 일치해야 합니다.

     

     

     

     

    14. static 

      - static은 객체 생성 없이 클래스 로딩만으로 메모리에 적재되기 때문에 클래스명, 변수명, 메서드명으로 접근해서 사용 가능합니다.

      - static에서 non-static으로 접근이 불가하기 때문에 접근을 위해 반드기 객체 생성이 필요합니다.

      - 반대로 non-static에서 static으로의 접근은 가능합니다.

     

     

     

     

    15. abstract

      - abstract라는 키워드를 class 또는 method 앞에 붙여 사용합니다.

      - abstract로 class를 선언하면 해당 클래스는 직접 객체화할 수 없다.

      - class 안에 abstract method가 하나 이상 존재한다면 해당 class는 abstract로 선언되어야 하고, 해당 method는 자식에게 구현을 강제해야 합니다.

     

     

     

     

    16. interface

      - 구현부가 없는 메서드 즉, 추상 메서드를 정의합니다.

      - 구현부가 있는 메서드는 정의가 불가능합니다.

      - static final 상수만 명시할 수 있습니다.

      - 다양한 interface를 implements 할 수 있습니다.

     

    ** abstract와 interface는 주로 표준화를 위해 사용합니다.     계층 구조 형성을 통해 다형성을 적용하고, 추상 메서드를 통해 자식에게 강제, 표준화 할 수 있습니다.     abstract와 interface의 차이는 abstract는 단일 계층 구조이고, interface는 다중 계층 구조입니다.     또한 interface는 멤버를 물려 주지 않지만, abstract는 물려줍니다.

     

     

     

     

    17. Exception

      - 자바 프로그램 실행 시 발생할 수 있는 예외를 말합니다.

      - JVM이 프로그램 실행 시 Exception 상황을 만나면 해당 Exception을 발생시키고 프로그램을 즉시 종료합니다.

      - Exception Handling (예외처리<try, catch, finally,,,>) 를 하여 Exception에 대한 대처 방안을 실행하고 프로그램을 정상적으로 지속시키기 위해 작업합니다.

     

     

     

     

    18. try / catch / finally / throws / throw 

      ① try : Exception 발생 예상 코드 영역을 지정합니다.

      ② catch : Exception 처리, Exception에 대한 대처 방안을 실행합니다.

      ③ finally : finally 영역은 Exception 발생 및 처리 여부와 관계없이 항상 실행합니다.

      ④ throw : Exception을 고의로 발생시킵니다.

      ⑤ throws : 호출한 영역으로 Exception을 발생하면 던질 수 있다는 의미입니다.

      

     

     

     

    19. String / StringBuilder / StringBuffer

      ① String

          - heap 내의 문자열 상수 영역에 저장합니다.

          - 동일한 문자열을 한번 생성하고 공유해서 사용하기 때문에 같은 문자열이 여러번 사용될 때 메모리 효율성이 높습니다.

          - ''불변''이기 때문에 문자열 변경 시 새로 생성합니다.

      ② StringBuilder

          - thread safe 하지 않습니다.

          - heap 영역에 저장되고, 문자열 자체가 변경되면 자체가 변경되기 때문에 자주 변경되는 문자열을 처리하는데 적합합니다.

      ③ StringBuffer

          - StirngBuilder와 동일하지만 thread safe 합니다.

      

     

     

     

    20. 객체 직렬화

      - heap영역에 저장된 메모의 Object의 정보를 외부로 전송할 수 있는 상태로 만드는 것을 말합니다.

      - java.io.Serializable interface의 하위 클래스가 되어야 합니다.

      - 객체의 역직렬화는 직렬화하여 저장된 객체의 정보를 다시 heap 영역의 메모리로 복원하는 것을 말합니다.

      - 객체 직렬화 시 사용되는 스트림은 ObjectOutputStream / writeObject 이고,

        역직렬화 시 사용되는 스트림은 ObjectInputStream / readObejct 입니다.

     

     

     

     

    21. Collection의 종류와 특징

      - Java Collection Framework에는 인터페이스 Collection(Set, List)와 Map이 있습니다.

      ① List는 순서가 있고, 중복되는 데이터를 포함합니다.

          - ArrayList, LinkedList, Vector 가 있습니다.

      ② Set은 집합적인 개념이고, 순서가 없고, 중복되는 데이터를 포함하지 않습니다.

          - HashSet, LinkedHashSet, TreeSet 이 있습니다.

      ③ Map은 검색할 수 있는 인터페이스이고, Key와 Value의 형태로 삽입되고, Key를 이용해서 Value를 얻을 수 있습니다.

          - HashMap, LinkedHashMap, TreeMap, ConCurrentHashMap, HashTable 이 있습니다.

     

     

     

     

    22. ArrayList와 LinkedList의 차이

      ① ArrayList는 단방향 포인터 구조이고, 데이터의 삽입, 삭제 시 해당 데이터 이후 모든 데이터가 복사되므로 빈번한 데이터에는 부적합합니다

          각 데이터에 대한 인덱스를 가지고 있어 데이터 검색에 적합합니다.

      ② LinkedList는 양방향 포인터 구조이고, 데이터의 삽입, 삭제 시 해당 노드의 주소지만 바꾸면 되므로 빈번한 데이터에 적합합니다.

          데이터 검색 시 처음부터 노드를 순회하므로 검색에는 부적합하고, 스택, 큐, 등을 만들기 위한 용도로 사용합니다.

     

     

     

     

    23. Generic

      - 자료구조체에 저장될 요소의 타입을 지정합니다.

      - 데이터의 안정성을 보장하고, 객체 캐스팅 정차를 줄입니다.

     

     

     

    24. 프로세스와 쓰레드

     

    프로세스란
    실행 중인 프로그램이고 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)를 할당 받아 프로세스가 된다.
    프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성된다.

    쓰레드란
    프로세스의 자원을 이용해서 실제로 작업을 수행한 것

    * 하나의 프로세스가 가질 수 있는 쓰레드의 개수는 제한되어 있지 않으나 쓰레드가 작업을 수행하는데 개별적인 메모리 공간을 필요로 하기 때문에 프로세스의 메모리 한계에 따라 생성할 수 있는 쓰레드의 수가 결정된다.

    현재 사용하는 OS는 대부분 멀티 태스킹(multi-tasking) 을 지원하기 때문에 여러 개의 프로세스가 동시에 실행될 수 있다.

    * CPU의 코어가 한 번에 단 하나의 작업만 수행할 수 있으므로, 실제로 동시에 처리되는 작업의 개수는 코어의 개수와 일치한다.

     

     

    25. Thread 

      - 프로세스 내의 세부적 실행 단위 입니다. (프로세스 : 현재 실행중인 프로그램)

         ex) 동영상 플레이어(프로세스)를 실행하면, 영상Thread, 음향Thread, 자막Thread 등 여러가지가 동시에 실행되어야 합니다.

      - Multi-Threading을 지원하고, heap영역의 멤버는 공유하고, stack영역은 각각 생성합니다.

         ex) 채팅

     

     

     

     

    26. Multi-Threading 

      - 하나의 클래스, 하나의 객체로 다수의 Thread를 생성하여 사용할 수 있습니다. 이때 다수의 Thread는 하나의 객체를 공유 자원으로 사용합니다.

      - heap 메모리 영역에 공유 자원 객체 하나가 존재하고, Thread 당 stack 메모리 영역에 지역 변수가 저장됩니다.

     

     

    26. synchronized 

    27. TCP 와 UDP 

     

     

    반응형

    '면접 정리' 카테고리의 다른 글

    데이터베이스 이론 정리  (0) 2019.02.18
    Web 기술 이론 정리  (0) 2019.02.14
Designed by Tistory.