My Space

기술면접

2021. 5. 4. 14:20
반응형

json, jsonp 차이

cross-domain 이슈를 회피하기 위하여 jsonp 요청을 한다.

json

=> {'home':'서울', 'name':'java'};

jsonp

=> callback({'home':'서울', 'name':'java})

외부 도메인으로 Ajax 요청을 할때는 jsonp를 사용해야한다.

가장 큰 차이점은 callback 함수명!!

 

php, java 차이

php는 원시코드가 바로 실행되는 스크립트 언어.

java는 컴파일 언어로 원시코드 작성/빌드/배포를 거쳐야 함.

 

개발 방법(TDD, BDD, DDD)

TDD(Test-Driven-Development) 테스트 주도 개발

- 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 케이스를 통과하는 가장 짧고 가독성이 좋고 유지보수성이 뛰어난 코드를 작성(실패하는 테스트 케이스를 먼저 작성 후 개발 진행)

- 일단 테스트를 통과하는 코드를 작성하고 상황에 맞게 리팩토링

 

장단점

- 개발하다 꼬여도 테스팅을 돌려봄으로써 안심하고 진행 가능

- 코드량이 늘기 때문에 빠른 생산성이 요구되는 시점에 걸림돌이 될 수 있다.

 

BDD(Behavior-Driven-Development) 행동 주도 개발

- TDD를 근간으로 파생된 개발 프로세스

- TDD와 유사하지만, TDD가 테스트 자체에 집중해 개발하는 방면, BDD는 비지니스 요구사항에

집중하여 테스트 케이스 개발

- TDD를 결함해 시나리오 테스트까지 하는 것

 

DDD(Domain-Driven-Development) 도메인 주도 개발

- 순수한 도메인의 모델과 로직에 집중하는 것

- 상호가 이해할 수 있고 모든 문서와 코드가 동일한 표현과 단어로 구성되게

- 도메인 모델부터 코드까지 항상 함께 움직이는 구조의 모델을 지향

 

 

sql 인젝션

웹 애플리케이션이 데이터베이스와 연동하는 모델에서 발생 가능한 것으로

해커가 SQL 구문을 조작하여 데이터를 변형하거나 인증을 우회 하는 등의 공격을 말한다.

흔하고 강력한 공격이지만 방어하는게 간단하다.

 

공격방법 예시

아이디 : test

비밀번호 : xx' OR 1=1 --    이런식으로 입력하면 쿼리에는 

select * from member where id = 'test' and passwd = 'xx' or 1=1 로 되어 무조건 true인 경우가 된다.

이를 방지하기 위해서는

파라미터 값이 직접 쿼리에 들어가는 Query String을 절대 사용하지 말고,

Parameter Binding을 사용하면 된다.

statement대신 preparedstatement 사용 할 것.

preparedstatement구문은 특수문자를 자동으로escaping 해준다.

//Statement 예시
String sql = "SELECT * FROM MEMBER WHERE ID = "+ userId;

//preparedStatement 예시
String sql = "SELECT * FROM MEMBER WHERE ID = ? ";
pstmt.setInt(1, userId);

 

가비지 컬렉터(Garbage Collector)

힙(heap) 영역에 할당된 더 이상 사용되지 않는 메모리를 다른 객체가 사용할 수 있도록

해제하는 것으로 JVM이 자동으로 처리하므로 객체의 소멸에 신경 쓰지 않아도 된다.

JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리 해줌

- 프로그래머에 의해 구현될 수 없다.

- 할당된 메모리를 명시적으로 해제 할 수 없으며, 가비지 컬렉터가 객체를 어떠한 순서로

   정리하는지 알 수 없다.

- 가비지 컬렉터가 언제 수행될지 정확히 알 수 없다.

- 객체에 null이 할당되거나 객체를 더 이상 참조하지 않게 되었을 때 대상이 된다.

 

사용 코드

Member member = new Member();
member.setName("Java");
member = null;
// 가비지 발생

 

싱글톤패턴

- 클래스의 인스턴스를 하나만 생성하고, 어디서든 그 인스턴스를 참조할 수 있도록 하는 패턴

- 생성자가 여러 번 호출되더라도 실제로 생성되는 객체는 하나

 

사용이유

- 고정된 메모리 영역을 가지고 하나의 인스턴스만 사용하기 때문에 메모리 낭비 방지

- 싱글턴 클래스의 인스턴스는 전역이기 때문에 다른 클래스의 인스턴스들이 데이터를 

   공유하기 쉬움

- DBCP처럼 공통된 객체를 여러 개 생성해야 하는 상황에 많이 사용

 

 

aop(point cut)

 

oop

 

filter

 

OAuth/JWT 인증

'Development > OTHER' 카테고리의 다른 글

애자일 소프트웨어 개발 선언  (0) 2021.07.29
스프링 핵심 원리  (0) 2021.07.29
OAuth/JWT  (0) 2021.07.24
clean code 3가지 사항  (0) 2021.04.29
[1차-환경구축]Spring-boot/JPA/H2(로그인, 게시판)  (0) 2021.04.26

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading