-
คุณรู้จักระบบควบคุมเวอร์ชันใด
Git, SVN, บาซาร์, Mercurial
-
SVN และ Git แตกต่างกันอย่างไร
-
GIT เป็น VCS แบบกระจาย แต่ SVN ไม่ใช่ กล่าวอีกนัยหนึ่ง หากมีนักพัฒนาหลายคนทำงานกับพื้นที่เก็บข้อมูล แต่ละคนจะมีสำเนาทั้งหมดของพื้นที่เก็บข้อมูลนี้บนเครื่องภายในของตน แน่นอนว่ายังมีเครื่องกลางที่คุณสามารถโคลนพื้นที่เก็บข้อมูลได้ สิ่งนี้ทำให้นึกถึง SVN ข้อได้เปรียบหลักของ Git คือหากคุณไม่สามารถเข้าถึงอินเทอร์เน็ตโดยฉับพลัน คุณยังคงสามารถทำงานกับพื้นที่เก็บข้อมูลได้ จากนั้นเพียงทำการซิงโครไนซ์เพียงครั้งเดียวแล้วนักพัฒนารายอื่นทั้งหมดจะได้รับประวัติทั้งหมด
-
GIT จัดเก็บการเปลี่ยนแปลงข้อมูลเมตา ในขณะที่ SVN จัดเก็บไฟล์ทั้งหมด ช่วยประหยัดพื้นที่และเวลา
-
-
GitHub คืออะไร? คุณมีโปรเจ็กต์บน GitHub หรือไม่?
GitHub เป็นบริการโฮสต์โครงการบนเว็บโดยใช้ระบบควบคุมเวอร์ชัน git รวมถึงเครือข่ายโซเชียลสำหรับนักพัฒนา ผู้ใช้สามารถสร้างพื้นที่เก็บข้อมูลได้ไม่จำกัดจำนวน โดยแต่ละแห่งมี Wiki มีระบบติดตามปัญหาให้ สามารถตรวจสอบโค้ดได้ ฯลฯ นอกจาก Git แล้ว บริการนี้ยังรองรับการรับและแก้ไขโค้ดผ่าน SVN และ Mercurial
-
ทำไมเราต้องมีระบบควบคุมเวอร์ชัน?
VCS ช่วยให้สามารถคืนไฟล์แต่ละไฟล์กลับไปเป็นรูปแบบก่อนหน้า คืนทั้งโปรเจ็กต์เป็นสถานะก่อนหน้า ดูการเปลี่ยนแปลงที่เกิดขึ้นเมื่อเวลาผ่านไป กำหนดว่าใครเป็นคนสุดท้ายที่ทำการเปลี่ยนแปลงโมดูลที่หยุดทำงานกะทันหัน ใครและเมื่อแนะนำบางประเภท ของข้อผิดพลาดในโค้ด ฯลฯ .. โดยทั่วไปหากใช้ VCS คุณทำลายทุกอย่างหรือสูญเสียไฟล์ทุกอย่างก็สามารถกู้คืนได้อย่างง่ายดาย
-
ทั่วไปคืออะไร? มีการนำไปใช้งานใน Java อย่างไร?
ข้อมูลทั่วไปเป็นประเภทที่กำหนดพารามิเตอร์ ด้วยความช่วยเหลือของพวกเขา คุณสามารถประกาศคลาส อินเทอร์เฟซ และวิธีการ โดยระบุประเภทข้อมูลเป็นพารามิเตอร์ ข้อมูลทั่วไปเพิ่มความปลอดภัยของประเภทให้กับภาษา
ตัวอย่างการใช้งาน:
class MyClass<T>{ T obj; public MyClass(T obj){ this.obj = obj; } } class MyClass<T>
วงเล็บมุมใช้Tซึ่งเป็นชื่อของพารามิเตอร์ประเภท ชื่อนี้ใช้เป็นตัวยึดสำหรับชื่อของประเภทจริงที่ส่งไปยังชั้นเรียน
MyClass
เมื่อสร้างประเภทจริง นั่นคือ พารามิเตอร์ typeT
ถูกใช้ในคลาสทุกครั้งที่ต้องการพารามิเตอร์ type วงเล็บเหลี่ยมระบุว่าพารามิเตอร์สามารถสรุปได้ คลาสนั้นเรียกว่าคลาสทั่วไปหรือประเภทที่กำหนดพารามิเตอร์ถัดไปประเภท
T
ที่ใช้ในการประกาศวัตถุตามชื่อobj
:T obj;
ประเภท จริงจะถูก ทดแทน
T
ซึ่งจะถูกระบุเมื่อสร้างวัตถุของชั้นเรียนMyClass
วัตถุobj
จะเป็นวัตถุประเภทที่ส่งผ่านพารามิเตอร์T
ประเภท หากT
คุณส่งประเภท เป็นพารามิเตอร์String
อินสแตนซ์ จะ มีobj
ประเภทString
พิจารณาตัวสร้าง
MyClass()
:public MyClass(T obj){ this.obj = obj; }
Параметр
obj
имеет типT
. Это значит, что реальный тип параметраobj
определяется типом, переданным параметром типаT
при создании an object классаMyClass
.Параметр типа
T
также может быть использован для указания типа возвращаемого значения метода.В именах переменных типа принято использовать заглавные буквы. Обычно для коллекций используется буква
E
, буквамиK
иV
— типы ключей и meaning (Key/Value), а буквойT
(и при необходимости буквыS
иU
) — любой тип.Обобщения работают только с an objectми. Поэтому нельзя использовать в качестве параметра elementрные типы вроде
int
orchar
.*Так же считаю нужным упомянуть generic методы. Это методы вида:
модификаторы <T, ...> возвращаемыйТип method name(T t, ...)
Как я понял, если в качестве типа в сигнатуре метода используются параметры, необходимо перед типом возвращаемого значения их перечислить. Верно ли это?
Более подробную информацию можно посмотреть по следующим linkм:
-
What такое стирание типов?
Внутри класса-дженерика не хранится информация о его типе параметре. Это и называется стиранием типов. На стадии компиляции происходит приведение an object класса к типу, который был указан при объявлении.
Пример:
-
What такое wildcard?
Wildcard — это дженерик вида <?>, что означает, что тип может быть чем угодно. Используется, например, в коллекциях, где для всех коллекций базовым типом является Сollection<?>.
Полезная link: Теория и практика Java. Эксперименты с generic-методами
-
Расскажите про extends и super в Generic'ах?
Whatбы наложить ограничение на wildcard необходимо использовать конструкции типа:
? extends SomeClass
— означает, что может быть использован любой класс-наследник SomeClass? super SomeClass
— означает, что может быть использован класс SomeClass, либо класс-родитель (or интерфейс) SomeClass
Это называется bounded wildcard.
Для того, чтобы определиться с выбором между
extends
иsuper
был придуман метод PECS.Подробно про это можно прочитать по ссылке ниже: Использование generic wildcards для повышения удобства Java API
-
Как использовать wildcard?
Пример использования wildcard:
List<?> numList = new ArrayList<Integer>();
Вопрос я не понял, но в принципе использование wildcard’ов рассматривается в материалах по linkм выше.
-
В чем отличие ArrayList и ArrayList<?>
Запись вида ArrayList называется raw type (обычный тип). Она эквивалентна записи вида ArrayList<T> и используется для обратной совместимости, т.к. до Java 1.5 не было дженерик коллекций. По возможности такой формы записи следует избегать.
ArrayList<?> является супертипом для ArrayList.
ระดับ 35 คำตอบสำหรับคำถามสัมภาษณ์ในหัวข้อระดับ
ยินดีต้อนรับคำถาม/เพิ่มเติม/คำวิจารณ์
GO TO FULL VERSION