https://github.com/sonypark/intervew_q-a_vx
기술 면접_코딩 관련 질문 정리
https://github.com/sonypark/intervew_q-a_vx
code
Last synced: 11 months ago
JSON representation
기술 면접_코딩 관련 질문 정리
- Host: GitHub
- URL: https://github.com/sonypark/intervew_q-a_vx
- Owner: sonypark
- Created: 2018-12-24T09:38:43.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-12-25T11:41:15.000Z (over 7 years ago)
- Last Synced: 2025-06-19T22:41:02.818Z (about 1 year ago)
- Topics: code
- Language: Python
- Homepage:
- Size: 17.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# intervew_Q-A_VX
기술 면접_코딩 관련 질문 정리
자바에서 추상화란
===============
### 객체 간 공통된 특징을 찾아내어 클래스로 만드는 것을 말한다.
여기서 공통된 속성은 클래스의 속성(property), 즉 변수가 되고
공통된 기능(행위)는 매소드가 된다.
예를 들어, 아이폰과 갤럭시가 있다고 하자
여기서 이 둘은 서로 다른 객체이지만 스마트폰이라는 하나의 범주로 묶을 수 있다.
따라서 아이폰과 갤럭시는 스마트폰이라는 class로 묶을 수 있다.
스마트폰 class를 만들고
스마트폰이 갖는 속성(변수)를 선언한다.
--디스플레이, 버튼, 카메라, 스피커 등
또한 스마트폰이 갖는 매소드(기능)을 선언한다.
--on/off, 사진 촬영, 동영상 촬영, 전화 걸기 받기 등
아이폰과 갤럭시라는 서로 다른 객체는 스마트폰이라는 class로 묶일 수 있고
스마트폰 클래스를 상속하는 하위 클래스로 만들 수 있다.
여기서 추상클래스는 스마트폰이다.
추상클래스는 객체를 만들기 어렵다. 왜냐하면 명확한 특징이 없기 때문이다.
추상클래스는 객체가 전혀 객체의 모습을 띄지 못하는 클래스를 말한다.
추상클래스를 만드는 이유는 하위 클래스의 공통 속성과 매소드를 선언함으로써 하위 클래스가 중복 선언하는 것을 방지하기 위함이다.
---------------------------
자바에서 참조(Reference)란
===============
### 복제
변수의 데이터 타입이 기본형(int,long,float,double,char,boolean,byte,short)이면 복제가 일어난다.
해당 인스턴스의 값을 독립적으로 저장한다.
```java
Int a =1;
Int b =a;
```
따라서 int b=a라고 해도 서로 참조하는게 아니라 독립적으로 저장된다.
### 참조
변수의 데이터 타입이 클래스를 호출해서 만든 객체(new())라면
해당 인스턴스의 주소값을 저장한다.
```java
A a = new A(1);
A b = a; // b는 a를 참조 --> 서로 같은 인스턴스를 가리킨다.
```
a를 수정하면 a가 가리키는 인스턴스 값을 수정한다.
b는a를 참조하므로 이 둘은 서로 같은 인스턴스 주소값을 가리킨다.
따라서 a,b 둘은 서로 같은 인스턴스 값을 참조한다고 할 수 있다.
-------------------------
자바_ equals와 ==의 차이점
===============
## equals vs ==
#### equals 매소드는 비교하고자 하는 대상의 내용 자체를 비교한다
#### == 연산자는 비교하고자 하는 대상의 주소값을 비교한다.
1. **CBV(Call By Value)** 는 주소값을 갖지 않으며 값을 할당받는 형태로 사용된다.
Primitive type(byte,short,int,long,float,double,char,boolean)
의 선언에 해당한다.
2. **CBR(Call By Reference)** 는 대상을 선언했을 때 주소값을 부여한다.
Class, Object(객체)의 선언에 해당한다
String은 class이다.
따라서 String은 equals로 비교해야한다.
Int는 primitive type이다. 따라서 값 그 자체를 비교하는 ==연산자를 사용한다.
```java
String a = "aaa";
String b = a;
String c = new String("aaa")
```
String은 클래스이므로 선언했을 때 주소값을 할당받는다.
b는 a를 참조하기 때문에 a와 같은 주소값을 가리킨다.
새로운 클레스 인스턴스로 선언된 c는 a,b와 다른 주소값을 가진다.
-------------------------
파이썬에서 id란
===============
## 파이썬 내장 함수 id
#### 객체의 메모리 주소값을 리턴한다.
```python
>>> a = 3
>>> id(3)
135072304
>>> id(a)
135072304
>>> b = a
>>> id(b)
135072304
>>> id(4)
135072292
```