반응형

> 이 글에 대한 정리

 

OOP(Object Oriented Programming)

OOP는 객체의 관점에서 프로그래밍을 하는 것이다. 추상화, 캡슐화, 상속, 다형성과 같은 특징이 있으며 코드의 재사용성과 중복제거가 가장 큰 목적이다.

 

 

Exception, Error 차이

Error는 컴파일 시 문법적인 오류와 런타임 시 널 포인트 참조와 같은 오류로 프로세스에 심각한 문제를 야기시켜 프로세스를 종료 시킬 수 있다. 또한, 하드웨어의 오동작, 고장 등 개발자가 미리 예측할 수 없다.

 

Exception은 시스템 동작 중 예기치 않았던 이상 상태가 발생하여 수행 중인 프로그램이 영향을 받는것으로. JAVA에서는 try문으로 이미 예방할 수 있다.

 

 

Statement Prestatement 차이

두 명령어는 아래와 같은 실행 단계를 거친다.

 

1) 쿼리 문장 분석

2) 컴파일

3) 실행

 

statement는 매번 쿼리를 수행 할 때 마다 1~3단계를 거친다. 무슨 SQL 인지 파악하지는 좋지만 매번 컴파일 하지 때문에 성능에 좋지 않다. 하지만 Dynamic SQL을 사용할 경우는 statement를 사용해야한다. prestatement는 1~3단계를 캐시에 저장하기 때문에 재사용 측면에서 좋다. 쿼리를 반복적으로 수행한다면 DB에 부하를 줄여준다.

 

 

Connection Pool을 사용하는 이유

미리 커넥션을 생성하여 client에서 접속 시 이용가능 하도록 한 후 사용 후 pool을 회수하는 방식. JAVA에서 DB와 Connection을 맺는 일은 매우 느리며 자원을 많이 소비한다. 사전의 일정량의 Connection 객체를 만들어 공유된 저장소에 담아둔다. 이전에는 직접 작성하였다고 한다 지금은 JDBC로 대체 하고 있다. Connection Pool은 큐넷에서 시험을 접수하는 것을 예로 들 수 있다. Pool은 10개 할당했다고 가정하면, 10명의 접속자는 홈페이지에서 DB와 접속하여 작업을 하고 이후에 들어온 사람들은 대기 순번이 생기고 차례를 기다리는 것이다.

 

 

DI(Dependency Injection)

DI 의존성 주입. 스프링 IOC 컨테이너의 핵심 개념 중 하나이다. 소스코드의 변경 없이 환경 설정(sprinc config.xml, bean 객체 등) 만으로 프로그램을 제어할 수 있다. 즉 클래스간의 의존관계를 빈 설정  정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 말한다.

 

 

그 외 Spring의 특징

1) AOP - 트랜잭션이나 로깅, 보안과 같이 공통적으로 필요로 하는 모듈을 실제 핵심 모듈로 분리해서 적용 할 수 있다. 공통된 기능을 재사용하는 기법. (이해만 함)

2) POJO - 컨테이너에 저장되는 객체는 특정한 인터페이스를 구현하거나 특정 클래스를 상속받지 않아도 된다.

 

 

MVC 패턴이란

Model, View, Controller로 프로젝트를 구성할 때 구성 요소를 세 가지 역할로 구분한 디자인 패턴.

 

 

MVC 패턴의 장점

서로 분리되어 각자의 역할에 집중 할 수 있게끔 하여 유지보수성, 애플리케이션의 확장성, 유연성 증가, 중복 코딩 문제점을 사라지게 해준다. 유연성이란 클라이언트의 새로운 요구사항에 대해 최소한의 비용으로 보다 유연하게 대체하는 것을 말한다.

 

 

Ouath 2.0 Token이란

인증과 권한부여에 관련된 기능이다. 서버와 클라이언트 사이에 인증을 완료하면 서버는 권한 부여의 결과로써 accee token을 발행한다. ouath 2.0은 외부 서비스의 인증 및 권한 부여를 관리하는 범용 프레임워크이다. 비밀번호를 제공하지 않고 다른 웹싸이트 상의 자신들의 정보에 대해 웹싸이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단이다. 예를 들면 페이스북, 카카오, 구글 ID로 회원가입을 하는 것.

 

 

Outah 2.0 Token 발생 Flow

client와 resource owner 간 요청과 반응을 3단계로 걸쳐서 부여 및 인증한다. (자세하진 않음)

 

 

JWT란?

JWT는 jsonwebtoken의 약어이다.(놀라웠다) JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 cliam 기반의 Web Token이다. 주로 회원 인증이나 정보 전달에 사용한다. 또한, *Cros를 해결하기 위해 사용한다.

*cros는 cross origin resource sharing의 약어로 port 번호가 다른 환경과 통신한 때 발생하는 이슈.

 

 

Ouath 2.0 과 JWT에 대한 차이(뇌피셜)

Ouath 2.0은 권한과 인증에 중점을 두고 있는 것 같다. 그 예시로 ouath를 사용하기 위해서는 릴레이션에 role이라는 필드가 필요하다. 해당 필드로 role이 0이면 일반 회원, 1이면 admin과 같이 구분할 수 있기 때문이다. 그리고 그 권한을 기준으로 자신의 정보를 본인만 조회할 수 있게해준다. JWT는 정보를 안전하게 전달해주는데 초점을 맞추고 있는것 같았다. 해당 정보를 열람하기 위해선 sign key가 필요하고, 이 key를 모르면 jsonwebtoken이 발행해주는 정보를 복호화하여 사용할 수 없기 때문이다. sign key가 특별한 건 아니고 '11111' 또는 'abadjflkjalkdsjf' 과 같이 남들은 모르게 지정해주면 된다.

 

 

Hint란

오라클 옵티마이저에게 SQL 문 실행을 위한 데이터 스캐닝하는 경로, 조인하는 방법 등을 알려주기 위해 SQL 사용자가 SQL 구문에 작성하는 것을 말한다. 오라클이 항상 최적의 실행 결로를 만들어 내기는 불가능하기 때문에 개발자가 직접 최적의 실행 경로를 작성한다.

 

 

Plan 이란

옵티마이저는 우리에게 어떤 경로로 테이블에 접근할 건지, 어떤 방식으로 조인하는지, 어떤 인덱스 자원을 사용하는지 등에 대한 계획을 알려준다. 해당 계획을 통해 SQL을 수정하여 자원의 낭비를 줄일 수 있다.

 

 

테이블 정규화란 ?

정규화는 릴레이션 내에서 중복을 제거하는 과정이다. 즉 중복을 줄이고 무결성을 향상 시킨다.


마치며..

🤦‍♂️ 그당시 질문에 대한 답변을 지금에서야 회고하면서 나 자신에 대해 더욱 반성하게 되었다. 또한, 내가 왜 그동안 면접에서 탈락했는지.. 얼마나 부족한 사람인지 깨달았다. 코딩 능력도 중요하다. 하지만 본질이 더욱 중요하다는 것을 알게되었다. 여기에 없는 답변은 천천히 이어나갈 예정이다

반응형

'취준 > 면접 준비' 카테고리의 다른 글

[면접 준비] 빅데이터 엔지니어  (0) 2020.06.30
반응형

🚀 게임 회사 백엔드 개발자 면접 회고

올해 처음으로(농심을 까먹었네) 두번째로 개발자로 면접을 보았다. 그동안도 전공과 관련된 직무였지만, 준비하던 직무는 아니었기에 탈락했을 때 회복이 금방되었다. 하지만 이번에는 준비하던 직무 면접을 보았고 어느 질문에도 명확하게 대답하지 못 한거 같다. 한심하다.

 

같은 실수를 반복하지 않기 위해 이렇게 회고한다.


🍙  JAVA

  • OOP( Object Oriented Programming ) 설명

  • Exception, Error의 차이
  • RuntimeException 이란?
  • Statement, PreparedStatement 차이
  • Connection Pool 을 사용하는 이유는?

 

🍙  Spring Framework

  • DI( Dependency Injection ) 설명
  • 그 외 Spring의 특징
  • MVC 패턴이란?
  • MVC 패턴을 사용하면 좋은 점은?
  • 유지보수와 코드 가독성이 좋다고 그랬는데, 그에 대한 예시를 제시
  • Ouath 2.0 Token에 대한 설명
  • Ouath 2.0 Token 발생 Flow
  • Ouath 2.0 Authoriztion 이란 ?
  • JWT에 대한 설명
  • JWT란 언제, 왜 사용되는지?
  • Ouath 2.0 과 JWT에 대한 차이
  • JWT가 보안성에 좋다고 하였는데 왜 그렇게 생각하는지?

 

🍙  DataBase

  • Hint에 대한 설명
  • Plan에 대한 설명
  • Explain 결과를 보면 방법에 대한 설명
  • 테이블 정규화란?
  • SQL을 작성할 때 어떻게 작성해야 효율적인지
  • JOIN시 발생하는 Cating에 대한 이슈를 설명

 

🍙  Project

  • 개발한 어플리케이션을 원스토어에 등록한 이유는?
  • 카카오 SDK 연동하는 FLOW 설명
  • 카카오 SDK 토큰은 어떻게 사용되는지
  • 졸업 작품에 대한 설명

 

🍙 ETC

  • 공개키에 대한 설명
  • 암호 알고리즘에 대해 아는 대로 설명
  • 흥미 또는 관심있게 수강한 과목

 

반응형
반응형

🌮 농심NDS

이번 상반기는 거의 다 끝이 났다. 결과적으로 좋은 결과는 없었다. 덕분에 나를 돌아보는 시간을 많이 가지게 된 것 같다. 부족한 내 실력을 코로나 탓으로 돌려본다. 처음부터 다시 시작하자 !

 

🚀 전형

서류 > 코딩테스트 ˙ 인성 > 면접 > 인턴 3개월 > 임원면접 > 전환

 

프로그래머스를 통해서 코딩테스트가 진행 되었고 다른 사이트에서 인성검사가 진행되었다. 인성검사는 거짓? 으로 답변하면 중간에 신뢰성에 관한 팝업나온다고 하니 주의하길 바란다.

 

코딩테스트는 알고리즘 3문제, SQL 1문제가 출제되었다. 부랴부랴 준비해서 풀긴했다. 1, 2번째 문제는 시간복잡도를 얼마나 잘 컨트롤 할 수 있는가 라는 문제였던 것 같다. 물론 나는 시간초과에 걸려 100점 중에 80점 정도 밖에 못 받았다. 3번째 문제는 제출하긴 하였으나 손도 못 대는 수준이었다... SQL은 쉬웠다. 

 

무참히 떨어져버린 프로그래머스 썸머 인턴 코딩테스트가 떠올랐다. 분명히 떨어지겠지....

 

믿을 수 없는 결과가 발생했다.. 면접을 보게 되었다. 덕분에 정보처리기사를 이틀 앞두고 서울로 향하였다.

🛸결론

나는 프로그래머스 레벨1,2 를 겨우 푸는 수준이다. 이 또한 아주 어렵게.. 레벨1,2 해결할 수 있는 수준이면 무난하게 합격할 수 있을거라고 생각한다. 인터넷을 보니 작년에는 JAVA만 가능하다고 했는데, 올해는 프로그래머스에서 진행되어서 C++, Python, Java script 등 다양한 언어로 응시가 가능했다. SQL은 JOIN을 사용하지 않았고 RANK에 관련된 문제가 출제되었다.

반응형
반응형

매우 뒤늦게 올리는 카카오 면접 후기 ..😅

 

* 당시 제출한 사전과제는 맨 아래에 있습니다


 

💎 요약

 

직 무 :  카카오 비즈 (비개발)

면 접 방 식 : 구글 meet (비대면)

면 접 구 성 : 3(면접관) : 1(나)

사 전 과 제 : 멜론 (8번)


💎 채용과정

 

사전과제를  작성해서 제출하고 간단한 자기소개서를 제출한 방식이었습니다. 비전공자여서 평소에 관심있는 주제로 급하게 과제를 작성하였고 아주 운이 좋게도 합격하였습니다 !

(살면서 이걸 받아볼 줄이야..)

 

면접은 정해진 시간에 진행되었고 대략 50분 정도 소요되었습니다. 

면접을 본 지가 다소 오래되어서 생각나는대로 작성해보겠습니다 !

 

  1. 간단한 자기소개
  2. 해당 과제를 선정한 이유
  3. 멜론을 어느 때 사용하는지
  4. 합격한다면 멜론에서 어떤 업무를 하고 싶은지
  5. 협업을 한 적이 있는지
  6. 협업 과정에서 어려움을 어떻게 극복했는지
  7. 직장 생활을 한 경험이 많이 있는데, 조직 생활에 어떤 점이 장단점으로 작용할 지
  8. 카카오의 서비스 중에서 사용하지 않는 서비스가 무엇인가
  9. OOO을 안 쓴다고 하였는데 어떻게 해야 많은 사람들이 해당 서비스를 사용할 지
  10. 전공이 컴퓨터 공학인데 왜 개발 업무에 넣지 않고 서비스 파트에 넣었는지
  11. 학교에 편입해서 본인이 한 노력
  12. 말투가 다소 상투적인데 평소에도 사용하는 말투인지

💎 마지막으로..

 

위에도 적혀있는 것 처럼 보란듯이 떨어졌습니다 😭😭 매 채용하다 합격 시그널이 존재하는것 같았습니다. 그러니 다들 준비 잘 하시고 꼭 합격하시길 바랍니다.

 

 

01. 카카오_과제.pdf
0.05MB

반응형

'취준 > 기타' 카테고리의 다른 글

2020년 KT 넥스알 빅데이터 엔지니어 면접 후기  (0) 2020.07.23

+ Recent posts