Code Monkey home page Code Monkey logo

job_interview_prac's Introduction

기술면접준비

Web

URL, URI

  • URL은 자원(파일)의 위치를 의미하고 URI는 인터넷 상의 자원의 식별자입니다. URI가 URL보다 상위 개념 입니다.

HTTP, HTTPS

  • HTTP는 웹 브라우저와 서버와의 통신 규약입니다.
  • HTTPS는 HTTP와 다르게 정보를 암호화해서 데이터를 전송합니다.

TCP/IP

  • 인터넷 표준 프로토콜입니다.
  • IP : 데이터가 전송되는 경로를 위한 프로토콜
  • TCP : 인터넷은 패킷을 이용하여 정보를 전달하는데 데이터가 손실되거나 순서가 뒤바뀌는것을 검색하여 교정하는 프로토콜

4계층

  • 네트워크 , 인터넷 , 전송 (tcp/ip), 응용 (http)

소켓 통신

  • 서버와 클라이언트가 특정 포트를 통해 양방향 통신을 하는 방식입니다.

GET, POST

서버에 요청을 하는 방식

  • get : 속도 빠름, uri에 노출, 데이터 한정 O
  • post : 속도 비교적 느림, uri에 노출X, 데이터 한정 X, body에 데이터를 담아 전송

동기, 비동기

  • 동기 : 요청과 결과가 동시에 일어남 -> 결과 주어지기 전 아무것도 못함
  • 비동기 : 동시에 일어나지 않음 -> 결과가 주어지지 않더라도 다른 작업

세션, 쿠키, 캐시

  • 사용 이유 : HTTP요청은 request, response가 이루어지면 연결을 끊음 -> 상태정보 유지 X
  • 세션 : 서버에 저장됨. 일정 시간동안 응답 없으면 끊김. 보안에 좋지만 서버에 저장하므로 메모리 많이먹음.
    • 클라이언트가 Request를 보내면 세션 ID 발급
  • 쿠키 : 클라이언트에 저장되는 키와 값이 들어있는 데이터 파일. 저장되는 양 한정되있음. 속도가 빠름
  • 캐시 : css, js , 이미지 파일을 사용자의 로컬에 저장

REST API

  • Representational State Transfer : 웹의 자원에 URI를 부여하여 API를 제공하는 것

Process 와 Thread

  • 프로세스 : OS로 부터 시스템 자원을 할당받는 작업의 단위
  • 쓰레드 : 프로세스가 할당받은 자원을 이용

라이브러리, API, 프레임워크

  • 라이브러리 : 특정한 기능을 모듈화하여 가져다가 사용할 수 있게 한것.
  • API : 라이브러리에 인터페이스(명세)를 포함
  • 프레임워크 : 애플리케이션의 틀과 구조를 결정. 공통된 부분을 제공하여 개발자는 비지니스 로직에 집중
  • 플랫폼 : 하드웨어나 소프트웨어의 환경

Data Base

트랜잭션

  • 데이터베이스 업무처리의 가장 작은 단위. 하나의 트랜잭션은 롤백되거나 커밋된다
  • Commit : 트랜잭션에 대한 작업이 성공적으로 끝남을 관리자에게 알려줌
  • Rollback : 트랜잭션의 일부라도 비정상 처리 되었을 때 모든 연산을 취소
  • 일관성 : 트랜잭션 연산은 모두 반영되던지 전혀 반영되지 않아야 한다.
  • 독립성 : 하나의 트랜잭션 연산에 다른 트랜잭션 연산이 끼어들 수 없다.
  • 지속성 : 트랜잭션의 결과는 영구적으로 반영된다.

Java

JAVA

  • JVM환경에서 돌아가는 객체 지향언어이다. 플랫폼에 종속적이지 않다.

제네릭

  • 제네릭 : 클래스에서 사용할 타입을 클래스 외부에서 설정하는 것.
  • 타입을 새롭게 만들기 위해 클래스를 새로 만들 필요가 없다.
  • 형 변환의 번거로움을 줄일 수 있다.
  • 제네릭은 기본 타입은 사용할 수 없다.

객체 클래스 인스턴스

  • 객체 : 소프트웨어 세계에 구현할 대상
  • 클래스 : 객체를 만들어 내기 위한 틀
  • 인스턴스 : 소프트웨어 세계에 구현된 실체

인터페이스

  • Interface(인터페이스) : 소프트웨어 개발에 있어 각 클래스 간에 상호작용을 위해 제공되는 기능 규격.
  • 멤버에는 public static final이 생략가능, method는 추상메소드
  • 유지보수가 편리하고 다형성을 나타내기 좋다. 메소드의 내부구조를 가릴 때 사용.
  • 추상메소드는 자바에서 클래스 간의 상속을 단일 상속만 허용하기 때문에 정의할 때 심한 제약이 따른다.

직렬화. serialVersionUID를 선언하는 이유?

  • 직렬화 : 입출력에 스트림이라는 데이터 통로를 사용하는데, 객체는 바이트형이 아니어서 스트림을 통해 파일에 저장하거나 네트워크 전송이 불가하다. 따라서 이를 가능하기 위해 객체를 바이트 배열로 변화하는 작업을 '직렬화'라고 한다.
  • 역직렬화 : 직렬화를 통해 받은 객체를 원래 모양으로 만드는 과정.
  • serialVersionUID : 직렬화,역직렬화 시에 클래스 버전이 맞는지 확인하는 용도.

JVM

  • JAVA Virtual Machine(자바 가상 머신) 역할 : 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 것이다. 그리고 JAVA와 OS사이에서 중개자 역할을 하여 운영체제에 독립적인 플랫폼을 제공한다. 또한 JVM은 자동으로 메모리 관리를 해준다

static

  • 객체를 생성하지 않고도 모든 객체들이 멤버나 메서드를 공유 할 수 있다.(편리, 속도빠름)
  • 메스드 내에서 인스턴스 변수를 사용하지 않으면 static을 사용할 수 있다.
  • 클래스 변수(static) / 인스턴스 변수(일반적인 멤버변수)

  • 기존에 정리한 자바 개념노트 보기
  1. 객체지향 : 추상화를 통해 캡슐화된 여러 개의 객체들이 상속관계를 맺어 하나의 조직이 되어 다형성을 표현한 것.
  • 객체(Object) : 하나의 역할을 갖는 데이터의 집합
  • 추상화(Abstraction) : 현실세계의 실체 및 개념을 사용자 관점에 따라 상태와 행위를 정의하는 과정.
  • 캡슐화(Encapsulation) : 추상화를 통해 정해진 상태화 행위가 하나의 틀로 모여지는 것. -> 정보은닉(독립성↑,보안↑) => 데이터 은닉 : 외부에서 객체의 상태를 알 수 없도록 숨기는 것. => 구현부 은닉 : 외부에서 객체의 행위를 알 수 없도록 숨기는 것.
  1. 상속 : 동일한 데이터나 함수의 중복 정의를 피하고 공통된 데이터나 함수를 한 곳에 정의하여 재사용 하자는 개념
  • 추상 클래스 : 일반화된 클래스로 서로 다른 유형의 클래스들 간에 공통된 속성, 행위를 추출하여 정의한 가상의 클래스.
  1. 다형성(Polymophism) : 동일한 환경(interface)에서 여러 동작을 하여 서로 다른 결과를 보여주는 것.(동적 바인딩)
  • JAVA에서의 다형성
  1. 객체 캐스팅(promotion) 2. 동적바인딩 3. JVM호출
  • JAVA에서의 다형성 매커니즘 1.Parametric Polymorphism(파라메터에 적용된 다형성)
  1. Heterogeneous Polymorphism(이형집합구조)
  • 객체 지향에서 다형성
  1. 오버로딩(함수) : 한 개의 클래스 내부에서 이름이 같고 파라메터 리스트가 다른 메소드를 정의.
  • 가독성을 높여주고, 생성자 오버로딩은 객체 로딩시 유효한 초기값 정책으로 인해 사용. (1) 연산자 오버로딩 : 특정 연산자가 상황에 따라 의미나 용도가 달리 쓰이는 현상 (2) 함수 오버로딩 : 한 클래스 내에서 동일의 함수가 여러 번 중복 정의되는 경우
  1. 오버라이딩 : 여러 개의 클래스들이 서로 관계를 맺고 있을 때 이미 정의된 메소드를 관계가 맺어진 클래스 내에서 재정의하는 것.
  1. 객체 캐스팅(Object Casting)과 동적 바인딩(Virtual Method Invocation)
  • 객체 캐스팅 : 상속 혹은 구현되어 있는 클래스나 인터페이스 타입이 서로의 타입으로 형변환 하는 것을 말한다.
  • 업캐스팅 / 다운캐스팅
  • 동적 바인딩 : 실행 타임 때 어떤 메서드가 실행될지를 메소드 호출 시점에 JVM이 결정하는 것.
  • 자바에서 일어나는 바인딩은 모두 동적 바인딩이다.
  1. 데이터 값 메모리 할당

  2. 생성자

  1. null-parameter constructor
  • 구현되지 않을 경우 JVM이 default constructor를 만든다.
  1. overloaded constructor : parameter가 선언되어 있는 생성자.
  • constructor chaining : class 내의 한 생성자에서 다른 생서자를 호출하는 관계.
  1. 접근 제어자
  1. private : 외부 접근 불가
  2. package(=default) : 같은 패키지
  3. protected : 같은 패키지 + 상속 관계
  4. public : 모두 허용

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.