분류 전체보기 107

[Kotlin] 코틀린이란? 왜 코틀린을 사용할까?

코틀린이란 무엇일까? 코틀린은 정적 타입 프로그래밍 언어로 JVM 안에서 돌아갈 수 있는 JetBrains 사에서 만든 언어이다. 자바에 비해서 얻을 수 있는 장점은? 코틀린은 간결하다. 또한 좀 더 안전하다. 정적 타입 언어로 타입을 체크해주고, null pointer exception에 자유롭다. 또한 자바 언어와 100% 호환된다. 코틀린은 어떻게 작동할까? 코틀린도 자바와 마찬가지로 소스코드를 컴파일 하여 class 파일을 만들어낸다. 그러나 코틀린은 코틀린 런타임 라이브러리에 의존한다. 따라서 배포시에 런타임 라이브러리도 함께 배포해야한다. 코틀린은 함수형 프로그래밍 언어다. 함수형 프로그래밍 함수형 프로그래밍의 등장 명령형 프로그래밍일경우 복잡하게 엉켜있는 스파게티 코드를 유지보수하는 것이 매..

함수형 프로그래밍

함수형 프로그래밍의 등장 명령형 프로그래밍일경우 복잡하게 엉켜있는 스파게티 코드를 유지보수하는 것이 매우 어렵다. 함수형 프로그램에서는 모든 것을 순수 함수로 나누어 문제를 해결한다. 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 한다. 작은 문제도 함수로 나누어 문제를 해결한다. // 1 ~ 10까지의 값이 i에 할당된다 for(int i = 1 ; i < 10; i++) { System.out.println(i); } process(10, print(num)); 무엇을 할 것인지에 포커스를 두는 프로그래밍 따라서 출력하는 함수를 파라미터로 넘길 수 있다. 1급 함수 함수가 1급객체로써의 의미를 가진다는 것은 포함관계를 갖는 데 있어서 최상위 레벨이 된다는 것이다. 이에..

CS 2021.08.27

[Spring] ControllerAdvice가 어떻게 작동할까?

Java에서는 Exception이 발생할 경우, 이에 대해서 스프링에서는 처리해주는 ExceptionHandler와 ControllerAdvice가 있다. [JAVA] 예외 처리 종류 1) Error와 Exception의 차이 Error(오류)는 자바 프로그램 밖, 시스템에서 비정상적인 상황이 발생한 것을 말한다. 이는 시스템 레벨에서 발생하는 오류이며, 프로세스에 문제를 야기시켜 프로세스를 bboglebbogle.tistory.com ControllerAdvice는 Controller에서 발생하는 Exception을 받아서 처리해주는 역할을 한다.(마치 interceptor 같다) 그렇다면 궁금해진것은, 어떻게 Exception이 발생하는 것을 catch하여 처리를 해주게될까? 그전에 알아야 할 것은 ..

CS 2021.08.22

[Spring] AOP란 무엇일까?

AOP란 무엇일까? AOP란 Aspect-Oriented Programming의 약자이다. 즉, [Aspect] 를 중심으로 프로그래밍하는 것이다. 예를 들어, 여러 개의 클래스가 있을 때 비슷한 기능을 하는 부분이 있을 것이다. 글을 읽을 때 로그인이 되었는 지 확인하고, 글을 작성할 때 로그인이 되었는 지 확인하고, 관리자 페이지를 들어갈 때 로그인이 되었는 지 확인하고 등등... 이 때 [로그인이 되었는 지 확인] 부분을 하나의 Aspect로 모듈화를 할 수 있다. 다음과 같이 class에서 겹치는 부분들을 Aspect로 모듈화하여 재사용하는 것이 AOP이다. 주요 용어 Aspect : 겹치는 부분을 모듈화 한 것 Target : Aspect를 적용하는 클래스 혹은 메서드 Advice : 어떤 일을..

CS 2021.08.21

2021 하반기 카카오페이 채용연계형 인턴십 2차 인터뷰 면접 후기

2021 하반기 카카오페이 채용연계형 인턴십 2차 인터뷰 1지망 직무 : 백엔드 개발, 2지망 직무 : IOS 개발 방식 : Google Meet 화상 인터뷰 1:2 시간 : 1시간 1시간동안 2차 인터뷰가 이루어졌고, Google Meet를 통해 이루어졌다. 지메일을 통해 정시에(사실 1분 늦었다) 초대 링크가 도착해서 들어갔고, 바로 시작하게 되었다. 면접 내용은 프로젝트 질문 + CS 질문 + 인성 질문이 있었고, 생각보다 기술 질문이 많이 있었다. 아마도 면바면이 있는 거 같다 :) 압박면접은 절대 아닌듯 일단 인성위주로 물어보시는 1분과 기술 위주로 물어보시는 1분이 있었다. 어떤 과목이 좋았냐 와 같은 가벼운 질문으로 시작해서 이런 경험있냐~ 없으면 말 안해도 되요~ 와 같이 뭔가 되게 편안한..

일상/취업후기 2021.08.17

[백준] 2413번 비슷한 순열 (C++) 문제 풀이

[백준] 2413번 비슷한 순열 (C++) 문제 풀이 2413번: 비슷한 순열 1부터 n까지의 수들을 중복 없이 나열한 것을 순열이라 한다. 순열이 하나 주어졌을 때, 그 순열과 비슷한 순열들 중에서 제일 작은 것을 구하는 프로그램을 작성하시오. 순열이 비슷하다는 것은 www.acmicpc.net 개인적으로 재미있는 문제라고 생각해서 블로그에 포스팅 해야겠다고 생각했다. 2413번 비슷한 순열 분류 : 그리디 알고리즘 난이도 : 골드 2 정답률 : 41% 조건 각 숫자와 최대 1 차이가 나야한다. 가장 작은 순열을 찾아야 한다. 해당 조건을 자세하게 생각해보면 다음과 같은 특이점을 찾을 수 있다. (1) 모든 숫자가 1번씩 나타나야 하고, A에는 (A-1, A, A+1)만 사용 가능하므로, 만약 A라는 ..

CS/알고리즘 2021.08.16

[코딩테스트] 2021 토스 NEXT 개발자 채용 (Server - Python) 후기

2021 토스 NEXT 개발자 채용 부문 : Server (Python) 지난 14일 토요일 2시부터 1시간 반동안 코딩테스트가 이루어졌다. 프로그래머스 홈페이지에서 진행되었고 총 6문제 (알고리즘 4문제, SQL 2문제)가 있었다. 경력 채용이지만 코딩테스트를 파이썬으로 풀어보고 싶어서 신청해보았다. 일단 테스트 전까지 두번이나 문자+메일로 알림을 주었고 해당 링크를 통해서 바로 문제를 풀 수 있었다. 시간 부족 예상 처럼 엄청나게 시간이 부족했다. 6문제를 1시간 반 안에 푼다는 것은 가능할가...? 일단 나는 못하겠다. 따라서 3문제는 풀고 1문제는 풀다가 포기했다. 난이도 순이 아니다 문제 순서가 난이도 순이 아니었다. 왜 그렇게 배열했는 지 모르겠지만, 그래도 친절히 난이도를 명시해줘서 난이도 ..

일상/취업후기 2021.08.16

[JAVA] 예외 처리 종류

1) Error와 Exception의 차이 Error(오류)는 자바 프로그램 밖, 시스템에서 비정상적인 상황이 발생한 것을 말한다. 이는 시스템 레벨에서 발생하는 오류이며, 프로세스에 문제를 야기시켜 프로세스를 종료시킬 수 있다. ex) 컴파일 오류 또는 메모리 부족, Stack Overflow Error는 프로세스에 영향을 주고, Exception은 쓰레드에만 영향을 준다. 2) Exception과 종류 자바에서의 예외(Exception)이란 사용자의 잘못된 조작이나 개발자의 코딩 실수로 인해 발생하는 프로그램 오류를 뜻한다. 자바에서는 Checked Exception과 Unchecked Exception이 있다. 일반 예외인 Checked Exception은 컴파일 단계에서 확인되는 예외로, 반드시 ..

CS 2021.08.16

[알고리즘] 문자열 탐색 알고리즘 KMP 그리고 활용 ❗️

문자열 탐색 중에서 가장 빠르다고 알려져있는 KMP 알고리즘에 대해서 정리해보겠다. KMP 알고리즘은 백준 사이트에서 최소 골드 2 등급을 받는 문제들로 난이도가 있는 편이다. 하지만, 한 번 정리하고 사용해보고 나면 그렇게 어렵게 느껴지지는 않아서, 해당 내용 정리해보려고 한다. 이중 배열로 문자열 탐색하기 일단, KMP 알고리즘을 사용하지 않고 문자열을 탐색해 보자. BADABCABDABCABCABDAB 라는 문자열 속에서 'ABCABDAB'라는 문자열을 찾으려면 어떻게 해야할까? 가장 쉽게 2중 for문을 통해 찾는 방법이 있다. 이때 찾을 문자열의 길이가 M, 대상 문자열의 길이가 N일 때의 시간 복잡도는 O(N*M)이 될 것이다. for(int i=0; i

CS/알고리즘 2021.08.12

스프링부트 & JUnit5 - 단위 테스트 작성 기본

Junit5로 단위 테스트 작성하기기본적인 스프링부트에서 JUnit5를 사용해서 단위 테스트를 작성해보자testImplementation 'org.springframework.boot:spring-boot-starter-test'아마 Spring Intializer에서 스프링 부트 프로젝트를 만들었다면, gradle에 해당 내용이 포함되어 있을 것이고, test 폴더에 ApplicationTests.java 파일도 이미 생성되어 있을 것이다.ApplicationTests.java 파일을 살펴 보자.@SpringBootTestclass ApiApplicationTests { @Test void contextLoads() { }}간단해보이지만, 의미가 있는 것들이다. intelliJ 개발환경..