서류 이전 회사가 SI였기 때문에 다양한 프로젝트를 경험한 것과 작은 회사였기 때문에 팀장 역할을 한것에 대하여 어필 아닌 어필을 했습니다. 자기소개서는 간략하게 적고 자기주도적 성장에 대해 적어서 제출했습니다. 지원한 부문은 백엔드 개발자입니다. 코딩 테스트 문제수는 세문제였으며 전부 영어로 되어있었습니다. '카카오 블라인드 코딩 테스트' 이런거에 비해서 난이도는 낮다고 생각이 들었습니다. 그래서 주어진 시간이 세시간 정도였던거 같은데 1시간만에 다 풀어서 제출했습니다. 복잡한 알고리즘보다는 자료구조에 대한 이해도와 시간복잡도 혹은 간략하게 풀 수 있는 센스를 보는 문제라는 느낌을 받았습니다. 원격 인터뷰 원격 인터뷰는 전화로 이루어졌으며 시간은 30분 정도였습니다. 면접관은 스피커폰으로..
InnoDB에서 잠금은 두가지로 나눌 수 있다. FOR SHARE (LOCK IN SHARE MODE) FOR UPDATE FOR SHARE (LOCK IN SHARE MODE) 트랜잭션이 끝날 때까지 SELECT를 한 Row 값이 변경되지 않는 것을 보장한다. 해당 Row를 수정하려는 쿼리는 잠김 상태가 되어 트랜잭션이 끝날 때까지 대기하게 되고, 조회 쿼리는 여러 세션이 동시에 수행하는 것이 가능하다. 이는 트랜잭션이 끝나기 전까지만 유효하므로 auto_commit을 꺼야 한다. SELECT name FROM user WHERE id = 1 LOCK IN SHARE MODE; # 5.7 SELECT name FROM user WHERE id = 1 FOR SHARE; # 8.0 # 8.0 버전에서는 ..
동시성 프로그래밍을 할때 트랜잭션 처리는 반드시 고려해야 할 사항이다. 하지만 데이터베이스 트랜잭션 범위를 넘어가는 문제가 발생하는 경우도 있다. 예를 들어 사용자 A와 B가 동시에 동일한 위키백과 내용을 열람하고 이를 수정할때, A가 먼저 수정완료 버튼을 누르고 그 이후에 B가 수정완료 버튼을 누르는 경우가 있을 수 있다. 그렇게되면 먼저 완료 버튼을 누른 A의 수정사항은 사라지고 나중에 완료한 B의 수정사항만 남는 현상이 일어난다. 이를 Second Lost Updates Problem(두 번의 갱신 분실 문제)라고 한다. 이 문제를 해결하기 위해서는 3가지 선택 방법이 존재한다. 마지막 커밋 인정하기 위에서 설명한것과 같이 A의 수정사항은 무시하고 마지막에 커밋한 B의 내용만 인정하는 방법으로 가장..
낙관적 락 (Optimistic Lock) 트랜잭션 대부분 충돌이 발생하지 않는다고 가정하는 방법으로써 어플리케이션이 제공하는 락 방식입니다. 그러므로 읽는 시점에 Lock을 사용하지 않기 때문에 데이터를 수정하는 시점에 다른 사용자에 의해 데이터가 변경되었는지 변경여부를 확인해야 합니다. 이렇게 낙관적 락은 트랜잭션을 커밋하기 전까지는 트랜잭션의 충돌 여부를 알 수 없습니다. @Version JPA가 제공하는 낙관적 락을 사용하려면 @Version 어노테이션을 사용하여 버전 관리를 추가하면 되며 지원되는 타입은 long, Long, int, Integer, short, Short, TimeStamp 이다. @Version 어노테이션을 붙이면 엔티티가 수정될때 자동으로 버전이 하나씩 증가하며, 수정할때 ..
HttpClient는 HTTP를 사용하여 통신하는 범용 라이브러리이고, RestTemplate은 HttpClient 를 추상화(HttpEntity의 json, xml 등)해서 제공해준다. 따라서 내부 통신(HTTP 커넥션)에 있어서는 Apache HttpComponents 를 사용한다. 작동원리 어플리케이션이 RestTemplate를 생성하고, URI, HTTP메소드 등의 헤더를 담아 요청한다. RestTemplate 는 HttpMessageConverter 를 사용하여 requestEntity 를 요청메세지로 변환한다. RestTemplate 는 ClientHttpRequestFactory 로 부터 ClientHttpRequest 를 가져와서 요청을 보낸다. ClientHttpRequest 는 요청메세..
트랜잭션에서 일관성이 없는 데이터를 허용하도록 하는 수준을 Isolation Level이라고 한다. Isolation Level을 조정하는 경우 동시성이 증가되는데 반해 데이터의 무결성에 문제가 발생할 수 있거나, 데이터의 무결성을 완벽하게 유지하는 데 반하여 동시성이 떨어질 수 있다. ANSI에서 작성된 SQL-92 표준은 다음 네 종류의 Isolation Level을 정의하고 있다. 위에서 아래로 내려갈수록 Consistency(일관성)은 향상되지만 Concurrency(동시성)은 저하된다. Read Uncommitted Read Committed Repeatable Read Serializable Read Uncommitted Isolation Level 쿼리를 수행하는 경우 해당 데이터에 Shar..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.