[CS면접 및 자바 면접 준비] 자바 기본 및 객체 질문
·
면접 준비
아직 내용을 수정중입니다. 혹시 출처를 표기해야 하는 부분이 있다면 댓글 부탁드립니다. Java의 특징 ➕ Java는 객체지향 프로그래밍 언어입니다. 기본 자료형을 제외한 모든 요소들이 객체로 표현되고, 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어입니다. 장점 JVM(자바가상머신) 위에서 동작하기 때문에 운영체제에 독립적이다. GabageCollector를 통한 자동적인 메모리 관리가 가능하다. 단점 JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리다. 다중 상속이나 타입에 엄격하며, 제약이 많다. JVM이란? ➕ [Java] - JVM StringBuffer >>> String 정도로 보면 된다. 하지만 각 클래스들은 성능 이슈 외에도 사용 편의성, 멀티 스레드 환경 등 ..
[백준 - 1715/ java] 카드정렬하기 - 우선순위 큐
·
문제 풀이/백준 문제풀이
필요 알고리즘 개념 그리디 일정한 규칙을 정해 매번 해당 규칙을 적용하다보면 답이 나오는 알고리즘 우선순위 큐 우선순위 큐는 자동으로 수가 우선순위대로 정렬된다. 우선 순위 큐를 사용해 mini heap을 사용 풀이 위 문제의 핵심은 연산 과정의 중간 결과가 다시 연산에 사용된다는 것 매번 가장 작은 2개를 뽑아 더해주면 된다 백준문제의 예시 1. 3개의 수를 받는다. 10 / 20 / 40 2. 연산 시작 10+20 =30 30을 합계에 포함한다. 중간 연산의 30을 다시 큐에 넣어준다. 30/40 3. 두 번째 연산 30+40 70을 합계에 포함한다. 결과 = 100 코드구현 import java.util.PriorityQueue; import java.util.Scanner; public class..
[Java] hashCode와 Equals를 함께 재정의하는 이유
·
JAVA-기초/JAVA기본
Set과 Map의 타입이 Wrapper Class가 아닌 Object를 받을 때 중복 검사는 어떻게 진행하는가?➕ hashCode() 메서드를 오버라이딩하여 리턴된 해시코드 값이 같은지 판단합니다. 값이 다르다면 다른 객체로 판단하고, 해시코드 값이 같다면 equals()메서드를 오버라이딩 하여 다시 비교합니다.위의 개념을 위해서는 동일성과 동등성을 먼저 알아야한다. **동일성** : 두 개의 객체가 완전히 하나의 같은 객체인지 판단하는 것. 즉 , 메모리에 저장된 주소공간이 완전히 같을 경우 동일성이 보장된다.  **동등성** : 두 객체의 주소공간이 달라도 단순히 가지고 있는 값만 같다면 동등성이 보장된다. 이는 단순 문자열(원시형)과 객체로 생성한 값 사이의 차이점과 동일하다.그 다음으로는 equa..
[백준 2164-Java ] 카드2 + Queue에 대한 설명
·
문제 풀이/백준 문제풀이
위 문제는 Java의 Queue관련 메서드를 공부한 사람이라면 간단히 풀 수 있는 문제다. 내가 먼저 정리해둔 Queue인터페이스의 메서드를 알아보자. LinkedList와 ArrayDeque는 Deque 인터페이스의 상속을 받아 양쪽에서 접근이 가능하다. 주로 LinkedList를 사용하여 큐를 구현하며 ArrayDeque가 더 효율이 좋은 경우도 있다. LinkedList는 LinkedArray처럼 모든 인덱스가 노드(위치)와 밸류(값)을 갖고 있어 중간에 값을 추가하거나 삭제할 때 더 효율적이다. ArrayDeque는 순차적인 검색을 할 때 더 효율적이다. 이를 알고 사용하면 더 효율적인 코드를 만들어 낼 수 있을 것이다. 그럼 문제를 살펴보자. 이번 문제는 매우 단순하다. https://www.a..
[백준 - 11659/ Java] 구간합 구하기
·
문제 풀이/백준 문제풀이
문제를 풀기 전에 우선 구간합을 구하는 방법을 알아야한다. 하지만 또! 구간합을 구하기 전에 합 배열을 만들줄 알아야 한다. ㅎㅎ 알아야하는 이유는 다음과 같다. 반복문으로 해당 문제를 풀었을때에는 시간 초과가 발생했다. 주어진 질의의 개수가 최대 10만개이다. 수의 개수도 최대 10만개이다. 최악의 경우에는 10만개의 수를 가진 배열안에서 10만번의 질의를 반복문을 돌려야한다. 이때 반복문을 통한 시간복잡도 O(n^2)로는 해결할 수 없다. 이 때 구간합으로 문제를 해결한다면 누적배열합을 생성하는데 O(N)이 들고 M번 반복하므로 O(N+M)의 시간복잡도를 갖는다. 해당 문제는 1초안에 풀어야하는데 구간합 알고리즘을 모른다면 반복문으로 통해 최악의경우 1억회이상의 연산을 하기때문에 시간내에 풀기 힘들것..
[Java - Spring Security6] Authentication(인증)과 관련된 Provider와 manager
·
Spring/Security6
이전의 내용에서는 1번 Config파일에서 인증을 거쳐야 하는 경로를 지정하거나 6번에서 비밀번호를 암호화하여 비밀번호 일치여부를 확인하는 과정에 대해서 배웠다! 오늘 공부해볼 내용은 3,4 과정이다. 유저는 로그인 하기 위한 세가지 방법을 진행할 수 있다. 첫 번째, 유저의 아이디와 비밀번호로 인증 요청 두 번째, OAuth2를 인증 요청 세 번째, OTP인증 요청 요청은 Security Filter가 인터셉트하여 인증을 위한 ProviderManager의 authenticate 메서드를 호출한다. ProviderManager는 Audentication Provider를 Implement한 클래스들을 모두 호출하여 인증성공을 반환하는 클래스가 있는지 확인한다. 우리는 Authentication Prov..