Hyemi Lee

Hyemi Lee

주니어 개발자의 삽질과 기록

기술 면접 준비-기본

JAVA 관련 예상 질문

1. 객체지향에 대해 설명해보세요

  • 캡상추다 (캡슐화 / 상속 / 추상화 / 다형성)으로 코드의 재사용성을 높이고 코드의 관리가 용이하고 제어자와 메서드를 이용하여 데이터를 보호하는데 좋다
  • 코드의 중복을 제거하여 코드의 불일치로 인한 오류를 방지 할 수 있다

캡슐화

  • 데이터 보호 / 불필요한 부분을 감출 수 있다 (접근 제어자 / 인터페이스 등)

상속

  • 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것 (class 자손클래스 extends 조상클래스{...})

추상화

  • 추상클래스 / 추상메서드 / 인터페이스를 예로 설명

다형성

  • 하나의 참조변수로 여러 타입의 객체를 참조 할 수 잇는 것 (조상타입의 참조변수로 자손타입의 객체를 다룰 수 있는 것)

2. 오버로딩 & 오버라이딩 차이?

  • 오버로딩(Overloading) : 같은 이름의 메소드 를 여러 개 가지면서 매개변수의 유형과 개수가 다름
  • 오버라이딩(Overriding) : 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의 해서 사용

오버로딩 조건

  • 메서드의 이름이 같아야 한다
  • 매개변수의 개수 or 타입이 달라야한다. (리턴타입은 오버로딩 구현과 관계 없다)

오버라이딩 조건

  • 선언부가 같아야 한다 (이름 / 매개변수 / 리턴타입)
  • 접근제어자를 좁은 범위로 변경할 수 없다
  • 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다

3. 접근제어자

  • 멤버 or 클래스에 사용되어, 외부로부터의 접근을 제한 (클래스 / 멤버변수 / 메서드 / 생성자)

public

: 접근 제한 없음

protected

: 같은 패키지 & 다른 패키지의 자손클래스에서 접근 가능

default

: 같은 패키지 내에서만

private

: 같은 클래스 내에서만 접근 가능


4. 클래스 / 추상클래스 / 인터페이스 차이

  • 클래스 : 설계도 , 추상클래스 : 미완성 설계도 , 인터페이스 : 밑그림
  • 인스턴스 생성여부
    • 클래스 : 인스턴스 생성 o
    • 추상클래스 / 인터페이스 : 미완성 이기 때문에 인스턴스 생성 x
  • https://devham76.github.io/java/java-interface/

★질문★ ) 인터페이스와 추상클래스의 차이점을 외관, 목적, 특징에 따라 설명해주세요

인터페이스 (밑그림-동일한동작)

  • 외관
    • interface , implements
    • 모든 메서드가 추상 메서드 + 상수 (java8 이후부터는 default,static메서드를 가질수있다)
  • 목적
    • 함수의 껍데기만 있는 인터페이스의 함수를 강제로 구현하게 한다
    • 해당 인터페이스를 구현한 객체들에 대해서 동일한 동작을 보장한다
    • 개인작업이 가능하게 해줘서 프로그래밍 시간을 단축 시킬 수 있다
  • 특징
    • 다중 구현 가능

      추상클래스 (미완성 설계도-이용/확장)

  • 외관
    • class extends
    • 추상메서드(구현코드가 없는 메서드)를 포함한 클래스
  • 목적
    • 추상 클래스를 상속받아 기능을 이용하거나 확장시킨다
    • 상속 받은 클래스가 자신의 기능에 맞게 메서드를 재구현 한다 (책임 위임)
  • 특징
    • 다중 상속 불가능 (다중 상속의 모호성)
    • car와 plane 두 클래스 모두 drive()메서드를 가지고 있다면 어떤걸 실행해야 될지 모호해진다.
     class MyVehicle extends car, 	plane{
     @Override
     public void goTo(){
     super.drive();
     }
     }
    
    • interface는 다중 구현이 된다 (구현되어있지 않은 추상메서드만 있다)
     class car implements vehicle,engine{
     @Override
     public void drive(){
     @doSomething
     }
     }
    

5. 프로세스/쓰레드

  • 프로세스 : 공장 / 쓰레드 : 일꾼

    프로세스

    : 실행중인 프로그램 . 자원(resources)과 쓰레드로 구성

    쓰레드

    : 프로세스 내에서 실제 작업을 수행하는 단위 . 모든 프로세스는 하나의 쓰레드를 가지고 있다

    멀티쓰레드

  • 하나의 프로세스에 하나 이상의 쓰레드를 생성하여 실행
  • 하나의 프로그램에 하나 이상의 작업수행

데이터베이스 SQL문 관련 예상 질문과 문제

select문 만드는 방법
SELECT 컬럼명
FROM 테이블명
WHERE 조건식
ORDER BY 컬럼명 OR 표현식(ASC OR DESC);
*WHERE 절에 쓰이는 연산자*
- 논리 비교 연산자 : != <> ^=
- SQL비교 연산자 :
1. NOT BETWEEN ~ AND ~
2. NOT IN
3. NOT LIKE (% 사용할 경우 결과도 알아야함)
4. IS NOT NULL
GROUP BY와 HAVING 절
SELECT 컬럼명, GROUP 함수
FROM 테이블명
WHERE 조건식
GROUP BY 컬럼명
HAVING 조건식
ORDER BY 컬럼명이나 표현식 // 제일 마지막에 위치 !!
// 문제 1.  지역별로  개의 부서가 있는지 나타내시오.
SELECT name, count(region_id)
FROM s_dept
GROUP BY site_name
// 문제 2.  부서별로 평균 급여를 구하되 평균 급여가 2000 이상인 부서를 나타내시오.
SELECT dept_id, AVG(salary)
FROM s_emp
GROUP BY dept_id
HAVING AVG(salary) >= 2000

JOIN

서브 쿼리(SubQUERY)

: 하나의 SELECT문 안에 포함되어 있는 또 다른 SELECT 문장

INDEX

  • RDBMS에서 대용량의 데이터가 있을때 특정 데이터를 검색하기위해 테이블을 FULL SCAN하는것이 아니라, 인덱스가 적용된 컬럼의 테이블을 따로 저장하고 그것을 검색해서 검색 효율을 높이는 방법
  • DELETE, INSERT, UPDATE에서는 성능 좋지 않다.
  • CREATE INDEX index_category ON book_store(category)
    • book_store테이블의 category컬럼에 index_category라는 인덱스 생성

JSP & JAVA SCRIPT 관련 질문

request 객체 / response 객체란?

  • request 객체는 클라이언트에서 서버로 넘어오는 데이트를 전달받기 위한 객체
  • response 객체는 서버에서 클라이언트로 데이터를 전달하기 위한 객체

GET & POST 방식의 차이

  • GET : URL로 값을 보내기 때문에 보안에 취약 하고 길이 제한이 있다
  • POST : 값을 전송하지만 URL에 노출되지 않아 보안에 강하고 많은 양의 데이터 를 보내는데 적합하다

쿠키(Cookie) & 세션(Session)의 특징

  • 공통점 : 데이터를 저장하는 용도로 쓰임
보안 속도
쿠키 물리적인 형태로 저장, 보안에 취약 빠르다
세션 서버에 보관, 보안에 좋다 느리다

비동기식 & 비동기식 일처리

  • 동기식 : 순차적으로 일을 스스로 끝내 나가는 방식으로 작업 당 페이지 이동이 있는 경우 이다
  • 비동기식 : 해야 할 일을 위임하고 기다리는 방식으로 ajax를 이용하여 구현 할 수 있는데 페이지 이동없이 고정된 화면에서 어떠한 처리가 이뤄지는 것을 말한다

static vs final

static

  • 메모리에 한번 할당되어 프로그램이 끝날 때 까지 유지된다><.b>
  • static이 붙은 변수들은 객체들이 다 같이 공유하는 데이터를 의미한다.

  • static이 붙은 메소드들은 객체들의 데이터와 관계없는 완벽하게 공통적인 로직을 정의할 때 사용한다.
  • static이 붙은 메소드를 보면 무조건 ‘객체와 무관하다.’혹은 ‘객체의 영향 받지 않는 메소드

  • 따라서 static 메소드에서는 인스턴스 변수나 객체의 메소드를 사용할 수 없다.

static을 쓰는이유

  • 인스턴스에 공통적으로 사용해야하는 것에 static을 붙인다
  • 전역으로 자주 사용할 메서드를 static메서드로 만들어 사용한다

final

  • final은 마지막, 최종적이라는 의미로 java에서 final 키워드는 상수나 메소드,클래스를 정의한 뒤 변경하지 못하게 할때 사용한다.

static final vs final

  • static final : 클래스이름없이도 사용가능
  • final : 객체생성없이 사용불가능

static final

static은 알다시피 클래스 변수이다. 그러므로 static final은 객체가 아닌 클래스에 존재하는 단 하나의 상수이다. 즉 객체마다 값이 바뀌는 것이 아닌 클래스에 존재하는 상수이므로 선언과 동시에 초기화를 해 주어야하는 클래스 상수이다.

public class SamsungTV
{
	static final String corpName="samsung"; //선언과 동시에 초기화
 public void turnOn(){
 //
 };
}

정규식 핸드폰 구현

- 핸드폰번호 정규식
var regExp = /^\d{3}-\d{3,4}-\d{4}$/;
- 일반 전화번호 정규식
var regExp = /^\d{2,3}-\d{3,4}-\d{4}$/;

필기로 나올수 있는 질문

  • 정렬 알고리즘 손코딩
  • 문자열 뒤집기(포인터) 손코딩
  • tcp 응용계층 아닌 것은
  • 디버깅하기(5개 버그유발하는 부분 찾아 고치기), 인터페이스와 추상클래스 공통점과 차이점, null포인터, void 포인터, DB 쿼리문
  • 스프링, IoC DI
  • JAVA의 Collections에 대한 질문,
  • Process와 Thread의 차이,
  • Thread와 ThreadLocal의 차이,
  • 싱글톤 패턴, 팩토리 패턴에 관한 질문

면접시 나올수 있는 질문

- 자기소개, 다양한 분야에 일할 수 있는데 괜찮은지, IoT란 무엇이라고 생각하는가(low level에서), NoSQL 써봤는지, 소켓통신 해봤는지, 형상관리 툴 뭐뭐 썼는지, 일정관리하는 툴 뭐뭐 써봤는지, 파이썬 어느정도 하는지, 본인이 생각하는 Java 스킬, Spring framework 쓰고 안쓰고 차이, DB 어떤거 써봤는지, 공백기 때 뭐해봤는지, 따로 독학으로 공부(개발관련)한 것 있는지, 궁금한 거 말해보기 등등

> Apache & Tomcat server

  • Apache : 웹서버(정적인 데이터) / 80
  • Tomcat : WAS(웹 어플리케이션 서버) / 8080 / 톰캣에서 아파치 기능을 일부 포함하고 있다 -> 아파치 톰캣

Reference

Share on

Twitter Facebook LinkedIn

You may also enjoy

Redis Stream

2021年04月28日

Stream Stream은 로그 데이터를 처리하게위해 5.0에서 새로 도입된 데이터 타입입니다. 대량의 데이터가 연속적으로 발생할때 처리하기 위해 등장했습니다. 기존 데이터를 수정하지 않고 오직 추가로 발생합니다. 이런 종류의 데이터를 stream or log데이터...

Study, Object, chapter2&3 presentation

2021年04月20日

chapter03. 역할, 책임, 협력 객체지향 설계란, 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동이다.

Spring, chatting 프로그램 만들기, Reactive란?

2020年06月16日

Reactive 막힘없이 흘러다니는 data(event)를 통해 사용자에게 자연스러운 응답을 주고 규모 탄력적으로 리소스를 사용하며 실패에 있어서 유연하게 대처한다 모든 지점에서 블럭 되지 않게 하자 oop와 같은 패러다임 모든 것을 비동기적인 data의 strea...