CodeStates_Backend/TIL (Today I Learned)
-
[TIL][모의 기술 면접#2]CodeStates_Backend/TIL (Today I Learned) 2022. 6. 22. 13:45
모의 기술 면접을 대비하는 개념 정리를 해본다. 🧲 인접 행렬과 인접 리스트의 차이점은 무엇인가요? 1. 인접 행렬 그래프 이론에서, 인접 행렬은 그래프에서 어느 꼭짓점들이 변으로 연결되었는지 나타내는 정사각 행렬이다. 인접 행렬을 adj[][] 라고 한다면, adj[i][j] 에 대해서 다음과 같이 정의할 수 있다. adj[i][j] = 노드 i 에서 j 로 가는 간선이 있으면 1, 아니면 0 cf) 만약 간선에 가중치가 있는 그래프라면, 1 대신에 가중치 값을 넣어주는 방식으로 구현할 수도 있다. 예시 아래 예시 그래프를 인접 행렬로 나타낸다면 다음와 같다. 위 그래프는 간선에 방향이 있는 유향 그래프이다. 유향 그래프일 경우 모든 간선을 1 로써 표현할 수 있지만, 무향 그래프일 경우는 어떨까? 아..
-
[TIL #17] 기술 모의 면접 #1CodeStates_Backend/TIL (Today I Learned) 2022. 6. 12. 22:03
코드스테이츠 백엔드 부트캠프 39기 29일차, 5/23 페어와 함께하는 기술 모의 면접 이번 섹션의 학습내용을 얼마나 잘 이해하고 있는 지 확인하고, 이해한 내용을 나의 언어로 얼마나 설명할 수 있는 지 확인해보는 시간을 가져보았다. 메타인지를 통해 자기객관화를 해볼 수 있었다. 실제 기술 면접에서도, 내가 알고 있는 내용을 얼마나 효과적으로 상대방에게 전달할 수 있는 지가 중요한다고 한다. 그것이 함께 일을 잘 해나갈 수 있는 사람임을 확인할 수 있는 방법이기 때문이다. 주어진 면접 질문들을 미리 선택하고, 1시간 30분정도 준비한 후 진행하였다. 따로 원고를 작성해두고 참여하지는 않았다. 페어분과 각각 30분 정도씩 진행했으며 답변에 대한 꼬리질문도 주고 받았다. 줌으로 진행하였고 서로의 면접 모습을..
-
[TIL #16-2][JAVA]Effective : Lamda, StreamCodeStates_Backend/TIL (Today I Learned) 2022. 6. 12. 21:23
코드스테이츠 백엔드 부트캠프 39기 25~26일차, 05/19~20 📌 Lamda 자바 8에서 함수형 프로그래밍을 위해 추가되었다. 람다식은 파라미터를 받고 연산을 수행하고 결과를 반환하는 작은 코드블록 이다. 그렇다. 메소드와 유사하다. 하지만 람다식은 이름이 필요없고(익명) 어떠한 메소드 body 내부에서 바로 선언 및 사용이 가능한 차이점이 있다. 람다식의 모습은 파라미터를 가진 코드 블록이지만, 실제로는 런타임 중에 익명 구현 객체를 생성한다. [참고] 익명 구현 객체란? 익명 구현 객체(Anonymous Class)란 말그대로 이름이 없는 객체이다. 일반적으로 인터페이스를 사용하기 위해서는 해당 인터페이스를 구현한 클래스가 필요하다. 그런데 만약 재사용이 불필요한 일회성의 구현 클래스가 필요하다..
-
[TIL #16-1][JAVA]Effective : enum, annotationCodeStates_Backend/TIL (Today I Learned) 2022. 6. 3. 20:18
코드스테이츠 백엔드 부트캠프 39기 25~26일차, 05/19~20 JAVA Effective 자바에서 효율적인 프로그래밍을 위한 다양한 심화 기술들을 Effective 라고 한다. 몰라도 구현은 가능하지만, 알면 전문가가 되는 느낌..? (근데 결국 알아야 될 듯함ㅋ...ㅋ) [권장도서] Effective JAVA (3년차 때 권장) enum enumerate 의 줄임말로 '열거하다' 의 의미이다. Enum 클래스로 정의되어 있다. 마치 데이터 타입처럼, enum 타입(=열거체)으로 사용한다. 서로 연관된 상수들을 열거하여 집합을 만든다. 다음과 같이 선언한다. enum 열거형이름 { 상수명1, 상수명2, 상수명3, ...} 블록 내의 각각의 상수들은 '열거 상수'라고 부른다. 위와 같이 별다른 초기화..
-
[TIL #15-2][JAVA] Collection Framework, List, Set, MapCodeStates_Backend/TIL (Today I Learned) 2022. 5. 31. 17:20
코드스테이츠 백엔드 부트캠프 39기 23~24일차, 05/17~18 Collection Framework 자바에서 Collection Framework는, 널리 알려져 있는 자료 구조를 바탕으로 데이터들을 효율적으로 추가, 삭제, 검색할 수 있도록 컬렉션을 만들고 관련된 인터페이스와 클래스들을 포함시켜둔 것이다. Collection Framework가 제공하는 다양한 인터페이스와 구현 클래스를 활용하면 객체 지향적이고 재사용성이 높은 코드를 작성할 수 있다. 주요 인터페이스로 List , Set, Map 이 있다. List 와 Set 은 객체를 추가, 삭제, 검색하는 방법에 공통점이 많아 둘의 공통된 메소드만 모아 Collection 이라는 인터페이스로 정의해두었다. Map 은 Key-Value 쌍으로 ..
-
[TIL #15-1][JAVA] genericCodeStates_Backend/TIL (Today I Learned) 2022. 5. 24. 10:30
코드스테이츠 백엔드 부트캠프 39기 23일차, 05/17 🍭 Generic generic 의 사전적 의미는 '총칭의, 포괄적인, 특정되지 않은' 이다. 자바에서 generic 은 '데이터 타입이 특정되지 않았을 때'라는 의미로 데이터 타입이 특정되지 않는 경우에 사용되는 키워드이다. JDK 1.5 이전에는 여러가지 타입을 관리해야하는 경우(=데이터 타입이 특정되지 않은 경우) Object 타입을 사용하였다. 하지만 이 경우 반환된 Object 객체를 다시 원하는 타입으로 변환해야 하는 과정이 필요하며 이 때 오류가 발생할 가능성마저 존재한다. 예제 코드를 보면, public class Basket { private Object object; Basket(Object object) { this.object..
-
[TIL #14-2][JAVA] 객체지향 프로그래밍 심화, 추상화CodeStates_Backend/TIL (Today I Learned) 2022. 5. 22. 13:54
코드스테이츠 백엔드 부트캠프 39기 19일차, 05/13 추상화 🍕 개요 자바에서 추상화란 객체의 공통적인 속성과 기능을 추출하여 정의하는 것이다. ⭐️ 추상화의 장점 1️⃣ 코드의 중복을 줄일 수 있다. 2️⃣ 클래스간의 관계를 효과적으로 설정할 수 있다. 3️⃣ 유지보수에 용이하다. 자바에서는 '추상 클래스'와 '인터페이스' 라는 문법 요소로 추상화를 구현한다. 상속계층도의 상층부에 위치할수록 추상화의 정도가 높고 그 아래로 내려갈수록 구체화된다. 🍕 abstract 제어자 자바의 제어자는 크게 '접근 제어자'와 '기타 제어자'로 구분될 수 있고, 기타 제어자에서 가장 빈번하게 사용하는 제어자 중 하나가 abstract 이다. abstract 의 사전적 의미는 '추상적인'인데 자바의 맥락에서는 '..
-
[TIL #14-1][JAVA] 객체지향 프로그래밍 심화, 다형성CodeStates_Backend/TIL (Today I Learned) 2022. 5. 21. 18:17
코드스테이츠 백엔드 부트캠프 39기 19일차, 05/13 다형성 (Polymorphism) 🐣 개요 '여러 개'를 뜻하는 poly 와, 어떠한 '형태' 또는 '실체'를 뜻하는 morphism 의 합성어로 '여러가지의 형태'를 의미한다. 하나의 대상이 여러가지 형태로 표현될 수 있다는 뜻이다. 자바에서 다형성은 한 가지 타입의 참조변수를 통해 여러 타입의 객체를 참조할 수 있게 만든 것을 의미한다. 예를 들면 상속받은 하위 클래스의 객체를 상위 클래스 타입의 참조변수로 참조하는 것이 있다. 이 경우 '상위 클래스 타입' 이라는 같은 타입의 참조변수들로 수많은 하위 클래스 객체들을 관리할 수 있다. 특히 여러 종류의 객체를 배열로써 다룰 수 있는 장점은 매우 크다. 🐹 장점은 코드의 중복을 줄인다. 🐹 메소..