{"id":27420953,"url":"https://github.com/sonypark/intervew_q-a_vx","last_synced_at":"2025-07-20T12:05:06.287Z","repository":{"id":102923384,"uuid":"162974869","full_name":"sonypark/intervew_Q-A_VX","owner":"sonypark","description":"기술 면접_코딩 관련 질문 정리","archived":false,"fork":false,"pushed_at":"2018-12-25T11:41:15.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-19T22:41:02.818Z","etag":null,"topics":["code"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sonypark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-12-24T09:38:43.000Z","updated_at":"2019-10-22T15:57:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"8599ff0e-6cf4-4a33-a907-58559201bc99","html_url":"https://github.com/sonypark/intervew_Q-A_VX","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sonypark/intervew_Q-A_VX","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonypark%2Fintervew_Q-A_VX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonypark%2Fintervew_Q-A_VX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonypark%2Fintervew_Q-A_VX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonypark%2Fintervew_Q-A_VX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sonypark","download_url":"https://codeload.github.com/sonypark/intervew_Q-A_VX/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonypark%2Fintervew_Q-A_VX/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266120066,"owners_count":23879251,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code"],"created_at":"2025-04-14T10:15:27.893Z","updated_at":"2025-07-20T12:05:06.281Z","avatar_url":"https://github.com/sonypark.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# intervew_Q-A_VX\n기술 면접_코딩 관련 질문 정리\n\n\n자바에서 추상화란\n===============\n### 객체 간 공통된 특징을 찾아내어 클래스로 만드는 것을 말한다.\n여기서 공통된 속성은 클래스의 속성(property), 즉 변수가 되고\n공통된 기능(행위)는 매소드가 된다.\n\n\n예를 들어, 아이폰과 갤럭시가 있다고 하자\n여기서 이 둘은 서로 다른 객체이지만 스마트폰이라는 하나의 범주로 묶을 수 있다.\n\n따라서 아이폰과 갤럭시는 스마트폰이라는 class로 묶을 수 있다.\n\n스마트폰 class를 만들고\n스마트폰이 갖는 속성(변수)를 선언한다.\n--디스플레이, 버튼, 카메라, 스피커 등\n\n또한 스마트폰이 갖는 매소드(기능)을 선언한다.\n--on/off, 사진 촬영, 동영상 촬영, 전화 걸기 받기 등\n\n\n아이폰과 갤럭시라는 서로 다른 객체는 스마트폰이라는 class로 묶일 수 있고\n스마트폰 클래스를 상속하는 하위 클래스로 만들 수 있다.\n여기서 추상클래스는 스마트폰이다.\n추상클래스는 객체를 만들기 어렵다. 왜냐하면 명확한 특징이 없기 때문이다.\n\n추상클래스는 객체가 전혀 객체의 모습을 띄지 못하는 클래스를 말한다.  \n추상클래스를 만드는 이유는 하위 클래스의 공통 속성과 매소드를 선언함으로써 하위 클래스가 중복 선언하는 것을 방지하기 위함이다.\n\n\n---------------------------\n\n\n자바에서 참조(Reference)란\n===============\n### 복제\n\n\n변수의 데이터 타입이 기본형(int,long,float,double,char,boolean,byte,short)이면 복제가 일어난다.\n\n해당 인스턴스의 값을 독립적으로 저장한다.\n\n```java\nInt a =1;  \n\nInt b =a;\n```\n\n따라서 int b=a라고 해도 서로 참조하는게 아니라 독립적으로 저장된다.\n\n\n### 참조\n\n변수의 데이터 타입이 클래스를 호출해서 만든 객체(new())라면\n해당 인스턴스의 주소값을 저장한다.\n\n```java\nA a = new A(1);  \n\nA b = a; // b는 a를 참조 --\u003e 서로 같은 인스턴스를 가리킨다.\n```\n\n\na를 수정하면 a가 가리키는 인스턴스 값을 수정한다.\n\n\nb는a를 참조하므로 이 둘은 서로 같은 인스턴스 주소값을 가리킨다.\n\n\n따라서 a,b 둘은 서로 같은 인스턴스 값을 참조한다고 할 수 있다.\n\n\n-------------------------\n자바_ equals와 ==의 차이점\n===============\n## equals vs ==\n\n\n#### equals 매소드는 비교하고자 하는 대상의 내용 자체를 비교한다\n#### == 연산자는 비교하고자 하는 대상의 주소값을 비교한다.\n\n\n\n\n\n1. **CBV(Call By Value)** 는 주소값을 갖지 않으며 값을 할당받는 형태로 사용된다.\n\nPrimitive type(byte,short,int,long,float,double,char,boolean)\n의 선언에 해당한다. \n\n\n\n\n2. **CBR(Call By Reference)** 는 대상을 선언했을 때 주소값을 부여한다.\n\nClass, Object(객체)의 선언에 해당한다\n\n\nString은 class이다.\n\n따라서 String은 equals로 비교해야한다.\n\n\nInt는 primitive type이다. 따라서 값 그 자체를 비교하는 ==연산자를 사용한다.\n\n\n```java\nString a = \"aaa\";\n\n\nString b = a;\n\n\nString c = new String(\"aaa\")\n```\n\n\nString은 클래스이므로 선언했을 때 주소값을 할당받는다.\n\n\nb는 a를 참조하기 때문에 a와 같은 주소값을 가리킨다.\n\n\n새로운 클레스 인스턴스로 선언된 c는 a,b와 다른 주소값을 가진다.\n\n\n\n-------------------------\n파이썬에서 id란\n===============\n## 파이썬 내장 함수 id\n\n\n#### 객체의 메모리 주소값을 리턴한다.\n\n```python\n\u003e\u003e\u003e a = 3\n\u003e\u003e\u003e id(3)\n135072304\n\u003e\u003e\u003e id(a)\n135072304\n\u003e\u003e\u003e b = a\n\u003e\u003e\u003e id(b)\n135072304\n\u003e\u003e\u003e id(4)\n135072292\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsonypark%2Fintervew_q-a_vx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsonypark%2Fintervew_q-a_vx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsonypark%2Fintervew_q-a_vx/lists"}