블로그의 글 기록을 보니까 여름 이후로 되게 오랜만에 블로그에 글을 작성하네요. 그 동안 많은 일이 있었지만 제목을 보면 알 수 있듯이 네이버 신입 공채에 합격했습니다. 같이 일하셨던 분들이 이직(?)이라고 다들 표현을 해주시던데 짧은 경력이지만 이직을 했습니다. 서류 + 코딩테스트 + 기업 문화 적합도 특이하게 네이버는 서류, 코딩테스트, 기업 문화 적합도를 같이 진행했습니다. 7/2에 코딩테스트를 보았고 7/1~7/3 사이에 기업문화 적합도를 제출하면 되었습니다. 코딩테스트 4문제 정도 나왔고 저는 3문제 정도 풀었던 걸로 기억합니다. 코딩테스트 시험을 보는 동안 카메라로 화면을 촬영해야했고 검색과 IDE사용이 불가능했습니다. 테스트의 난이도는 쉽지는 않았지만 시간이 충분히 주어지면 풀 수 있었을 정..
사실 합격한지 오래 되었는데 기록을 위해서 합격 후기를 작성합니다. 전체적인 과정 전체적으로는 서류 → 코딩테스트 → 1차 면접 → 2차 면접으로 구성되었습니다. 이 모든 과정이 약 한달 반 정도 걸렸습니다. 서류 서류로는 이력서 + 포트폴리오 + 자기소개서 이렇게 3개를 제출했습니다. 이 3개를 통해서 최대한 저를 어필할 수 있도록 자세하게 적었던 것 같습니다. 이 서류들은 노션 링크로 제출을 했었습니다. 서류 결과에 대한 지연 연락을 받았었습니다. 그래도 너무 지연되지 않았고 한 10일 뒤에 코딩테스트 안내 연락을 받았습니다. 코딩 테스트 운이 좋게 서류 합격을 했고 코딩테스트 안내 메일을 받았습니다. 정해진 기간 내에 응시를 하면 되는 형태였습니다. 총 8문제였고 아마 3문제가 알고리즘 문제였고 5..
싱글턴 디자인 패턴중 싱글턴 패턴이 있다. 싱글턴 패턴은 객체를 하나만 생성할 수 있는 클래스이다. 싱글턴 구현 방법은 중 필드에 객체를 생성하고 private 생성자를 통해서 새로운 객체 생성을 막는 방법이 있다. 코틀린에는 객체 선언(object declaration) 기능을 통해서 싱글턴을 지원한다. object declaration 스다듀밸리라는 클래스에 농부 정보를 저장하는 기능을 생각해보자. 스다듀밸리는 하나만 있는 농장이므로 싱글턴 패턴을 적용할 수 있다. object SdardewValley { val farmers = arrayListOf() fun countFarmers() : Int = farmers.size } 객체 선언은 object로 시작을 한다. object 안에는 주 생성자나..
데코레이터 패턴 데코레이터 패턴은 상속을 허용하지 않는 클래스에 새로운 기능을 추가할 때 사용하는 방법이다. 데코레이터라는 클래스를 생성하고 상속되지 않은 클래스의 인스턴스를 데코레이터의 필드에 놓는다. 그리고 기존의 요청은 인스턴스에게 전달한다. 추가하고 싶은 기능은 데코레이터 클래스에 작성을 하면 된다. 코틀린에서 제공하는 데코레이터 패턴 class CountingSet ( val innerSet: MutableCollection = HashSet() ) : MutableCollection by innerSet { var objectAdded = 0 override fun add(element: T): Boolean { objectAdded++ return innerSet.add(element) } ..
데이터 클래스 data class Client(val name: String, val postalCode: Int) 코틀린에서는 클래스 앞에 data 키워드를 붙이면 toString, equals, hashCode를 자동으로 생성해준다. equals와 hashCode는 주생성자의 프로퍼티들을 사용한다. 물론 자기가 직접 toString, equals, hashCode 메서드를 직접 작성할 수 있고, 이 경우에는 컴파일러가 생성해 주지 않고 직접 작성한 것을 사용한다. 데이터 클래스는 abstract, open, sealed, inner 클래스가 될 수 없다. 위 코드에서 프로퍼티들은 val을 사용했지만, var을 사용해서 생성할 수도 있다. 하지만 데이터 클래스는 모든 프로퍼티가 읽기 전용인 불변 클래스..
hashCode를 구현할 때 31 숫자를 많이 사용한다. 그래서 그 이유에 대해서 찾아보았다. 홀수인 소수이다 첫번째로 31은 소수이기 때문에 사용된다. 소수인 경우에는 값을 곱하였을 때 더 분산이 잘 된다. 만약 소수가 아닌 경우(다른 수로도 배수가 만들어지는 경우)에 충돌이 발생하기 쉽기 때문이다. 짝수로 해시값이 나오는 경우에는 홀수 번째 자리를 효율적으로 사용하지 못한다. 따라서 소수를 사용해서 충돌을 최대한 방지하는 것이다. 쉬프트 연산을 사용할 수 있다 X * 31은 쉬프트 연산과 뺄셈 연산으로 표현할 수 있다. X * 31 X * (32 - 1) X * 32 - X X
코틀린에서도 toString, equals, hashCode 메서드를 오버라이딩할 수 있다. 그리고 이 메서드들은 자바와 같은 역할을 한다. Mac OS의 IntelliJ에서 [Control] + [O]를 입력하면 해당 메서드들을 쉽게 정의할 수 있다. toString toString은 문자열을 표현할 때 사용하는 방법이다. 클래스에 toString을 오버라이딩하지 않으면 인스턴스를 출력할 때 주소값이 출력된다. class Client(val name: String, val postalCode: Int) { override fun toString() = "Client(name=$name, postalCode=$postalCode)" } 위 코드는 Client 클래스에 toString 메서드를 작성한 것이..
Squash merge란? GitHub에서 PR을 merge할 때 [Create a merge commit], [Squash and merge], [Rebase and merge]의 3가지 옵션이 있다. create a merge commit은 단순하게 git merge 브랜치명만을 사용하는 방법이다. 해당 방법은 Fast-Forward & 3-way 병합 글을 보면 어떤 방식으로 병합이 되는지 알 수 있다. Rebase and merge는 rebase 글을 보면 된다. 이 글에서는 Sqash and merge에 대해서 다룰 것이다. squash merge는 git 히스토리를 요약해서 병합하는 방법이다. 분기 이후에 발생한 브랜치의 모든 commit들을 하나의 새 커밋으로 요약한다. 위에는 git log..
Postman의 테스트 기능 테스트 기능을 통해서 API가 원하는대로 작동하는지, 서비스 간 안정적으로 통합되었는지, 변경했을 때 기존 기능에도 문제가 없는지를 검사할 수 있다. Javascript를 사용해서 request의 응답에 대해서 테스트를 작성할 수 있다. 테스트를 생성하는 방법은 Postman을 사용한 자동화 테스트 글을 참고하면 된다. Postman에서 테스트가 실행되는 시점은 응답을 받은 직후에 실행된다. pm.test pm.test("상태 코드는 200이다", function() { pm.response.to.have.status(200); }); postman에서는 pm.test 함수를 사용해서 테스트 함수를 정의한다. test 함수의 첫번째 매개변수는 테스트의 이름이다. 테스트의 이름..
Data Fetcher란? Data Fetcher은 Graphql의 쿼리에 해당하는 데이터를 반환하는 역할을 한다. Data Fetcher을 만들기 위해서 메서드에 @DgsData, @DgsQuery, @DgsMutation, @DgsSubscription 어노테이션을 사용한다. 그리고 Data Fetcher 메서드들은 @DgsComponent가 붙은 클래스 안에 위치해야 한다. @DgsData DgsData는 parentType, field 이렇게 2개의 파라미터를 받을 수 있다. parentType: 필드가 포함된 부모 타입 field: data fetcher가 반환할 쿼리의 필드 위 스키마에 대해서 아래와 같은 data fetcher을 작성할 수 있다. @DgsComponent public clas..
- Total
- Today
- Yesterday
- Kotlin
- postman collection
- Squash and merge
- Kotlin In Action
- pm.expect
- 코틀린
- java
- graphql
- string
- go 특징
- 코딩테스트
- Python
- 확장 함수
- mysql
- 네이버 2022 공채
- 주생성자
- postman tests
- pm.test
- git
- postman
- DGS Framework
- python3
- 1차 인터뷰
- downTo
- Basic Type
- solidity
- hashcode
- 2차 인터뷰
- github
- squash merge
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |