일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- #abex
- #파밍
- Easy
- #크랙미4번
- #크랙미
- #심플즈
- #크랙미2번
- #크랙미 10번
- #보안이슈
- #보안뉴스
- #abex크랙미
- #리버싱
- #심플즈 크랙미
- springframework
- #abex크랙미4번
- #크랙미3번
- Spring
- GraphQL
- leetcode
- #크랙미 9번
- java
- 리버싱
- #크랙미 5번
- java8
- #고클린
- Today
- Total
목록개발자 인터뷰 준비 (7)
Halo World
SOLID는 OOP설계의 다섯가지 기본 원칙으로 객체지향 설계를 할때 지켜야 하는 원칙으로 알려져 있다. SRP (Single Responsibility Principle) 단일 책임 원칙 : 하나의 클래스는 하나의 책임만 갖는다. 한 클래스가 여러 책임을 갖고 있는 경우 혼재된 책임을 개별 클래스로 분할하여 한 클래스당 하나의 책임만 맡도록 한다. 자식 클래스끼리 유사한 책임을 중복으로 정의한다면, 부모 클래스로 공통되는 책임을 위임한다. 여러 클래스에 동일한 책임이 분리된 경우 중복되는 책임을 특정 클래스로 분리한다. (응집성 증가) 장점 : 기능의 책임 영역이 확실해져 한 책임의 변화가 다른 책임에게 side effect를 미치지 않도록 방지할 수 있고, 코드의 가독성과 유지보수성이 향상된다. 클래..
* 인터뷰시 인터뷰어는 원하는 방향으로 면접자를 가이드하면서 면접자의 property를 검증하려고 한다. 따라서, 인터뷰어가 가이드 할 수 있게 놔둘 것 * "트위터는 어떻게 설계되어있을까요?"라고 질문한다면, 바로 답을 도출하지 말고 답을 풀어가는 과정을 보여줄 것 (~~ 기능들을 수행해야하니 어떤 것이 필요하고, 또 그것을 위해서는 어떤 것이 필요하고,, 이런식) Core Features 1. Tweeting 2. TimeLine User TimeLine : 본인 트윗 + 리트윗한 트윗 (More easy too design! => 자신의 트윗과, 리트윗한 액션을 리스트업하면 됨) Home TimeLine : 팔로우한 사람들의 트윗 3. Following 다른 기능들은 비교적 단순하니 Home Tim..
- 자바 비동기 처리의 방법 / 장점 - Async 처리시 주의사항, 고려사항, Pool 설정이유, 단점 - Async 예외처리 - Future와 CompletableFuture의 차이점 Java 비동기 처리 방법 1. @Async annotation 으로 간단하게 처리 가능. 클래스에 @EnableAsnyc를 추가하고, 비동기로 제공하고자 하는 메소드에 @Async 어노테이션을 추가하는 방식으로 가능함. @Async의 기본 설정은 SimpleAsyncTaskExecutor 이기 때문에 thread 관리를 위해서는 별도로 구성해주어야 함 2. Async thread pool 설정을 위한 별도의 @Configuration 클래스를 만들고, 해당 클래스에 @EnableAsync 어노테이션 추가. (기존 클래..
1. SQS Fully managed message queuing service 메시지 손실이나 다른 서비스를 별도로 요구하지 않고, 모든 처리량 수준에서 모든 크기의 데이터 전송 가능 고 가용성 메시지 클러스터를 운영하고 스케일링하는 관리 부담이 적음 (workload에 맞게 자동 확장) 사용하는 만큼만 가격 지불 사용하기 쉽고, 신뢰할 수 있음 (Easy to use, reliable) Medium, Lyft, Coursera 등에서 사용 2. Kafka 분산, 내결함성, 높은 처리량을 지원하는 pus-sub 메시징 시스템 Kafka는 distributed, partitioned, replicated 된 커밋 로그 서비스 메시징 시스템의 기능을 제공하긴하지만, 독특한 디자인임 높은 처리량 (High-..
Spring 3.2.x Java 5 기능 @Async annotation을 활용한 비동기 메서드 호출 지원 하나의 Spring.jar 로 지원하던 것을 spring-core, sprint-web 등으로 나눔 Java 클래스로부터 @Configuration @Bean 등 annotation을 통해 DI 지원 받기 가능 RestTemplate 이용 가능 16.12.31 지원 종료 Spring 4.3.x (Spring boot 1.5) Java 8 지원 @Autowired 지원 custom-annotation 가능 Bean 관리 용이(@Order, @Lazy annotation) Framework 레벨에서 테스트 유틸리티 지원 (AopTestUtils, ReflectionTestUtils 개선) 20.12.3..
Java 7 개선점 다이아몬드 연산자 switch문에 String 자료형 사용 가능 try-with-resources 등장 AutoCloseable 인터페이스로 자원의 자동 회수가 가능하다. (대부분의 자원이 AutoCloseable을 구현하고 있음) muti exception catch 가능 참고 - johanneslee.github.io/articles/page7/ Java 8 개선점 Lamda 표현식 사용 가능 : 함수형 프로그래밍이 가능해짐 함수형 프로그래밍의 장점은? -> 높은 수준의 추상화 가능 / 함수 단위의 코드 재사용 수월 / 불변성 지향 (프로그래밍의 동작을 예측하기 수월함) / 직관적임 Stream (https://jeong-pro.tistory.com/165) 스트림이란? 컬렉션, ..
멀티 프로세스 vs 멀티 쓰레드 멀티 프로세스는 한 대의 컴퓨터에 서비스를 여러개 띄워 사용하는 방식으로, 프로세스는 하나의 애플리케이션이라고 보면 된다. 각 프로세스는 독립적인 메모리를 할당받기 때문에, 메모리를 공유할 수 없고 공유하기 위해서는 IPC(프로세스간 통신)을 이용해야 한다. 멀티 쓰레드는 한 프로세스 안에 쓰레드를 여러개 실행시키는 방식으로 각 쓰레드는 별도의 stack 영역을 갖지만 heap 영역이나, data 영역, code영역은 공유해서 사용한다. 어떤 것이 더 효율적일까? 일반적으로 하나의 프로세스에서 여러 작업을 동시에 실행하는 멀티 쓰레드 방식이 더 효율적이고 멀티 쓰레드 방식은 아래 두 가지의 이점을 갖는다. 1) 메모리 자원 공유 : 멀티 쓰레드 방식은 stack을 제외한 ..