JavaRush /จาวาบล็อก /Random-TH /ระดับ 35 คำตอบสำหรับคำถามสัมภาษณ์ในหัวข้อระดับ
Afli
ระดับ
Санкт-Петербург

ระดับ 35 คำตอบสำหรับคำถามสัมภาษณ์ในหัวข้อระดับ

เผยแพร่ในกลุ่ม
ยินดีต้อนรับคำถาม/เพิ่มเติม/คำวิจารณ์ ระดับ 35 คำตอบสำหรับคำถามสัมภาษณ์ในหัวข้อระดับ - 1
  1. คุณรู้จักระบบควบคุมเวอร์ชันใด

    Git, SVN, บาซาร์, Mercurial

  2. SVN และ Git แตกต่างกันอย่างไร

    1. GIT เป็น VCS แบบกระจาย แต่ SVN ไม่ใช่ กล่าวอีกนัยหนึ่ง หากมีนักพัฒนาหลายคนทำงานกับพื้นที่เก็บข้อมูล แต่ละคนจะมีสำเนาทั้งหมดของพื้นที่เก็บข้อมูลนี้บนเครื่องภายในของตน แน่นอนว่ายังมีเครื่องกลางที่คุณสามารถโคลนพื้นที่เก็บข้อมูลได้ สิ่งนี้ทำให้นึกถึง SVN ข้อได้เปรียบหลักของ Git คือหากคุณไม่สามารถเข้าถึงอินเทอร์เน็ตโดยฉับพลัน คุณยังคงสามารถทำงานกับพื้นที่เก็บข้อมูลได้ จากนั้นเพียงทำการซิงโครไนซ์เพียงครั้งเดียวแล้วนักพัฒนารายอื่นทั้งหมดจะได้รับประวัติทั้งหมด

    2. GIT จัดเก็บการเปลี่ยนแปลงข้อมูลเมตา ในขณะที่ SVN จัดเก็บไฟล์ทั้งหมด ช่วยประหยัดพื้นที่และเวลา

  3. GitHub คืออะไร? คุณมีโปรเจ็กต์บน GitHub หรือไม่?

    GitHub เป็นบริการโฮสต์โครงการบนเว็บโดยใช้ระบบควบคุมเวอร์ชัน git รวมถึงเครือข่ายโซเชียลสำหรับนักพัฒนา ผู้ใช้สามารถสร้างพื้นที่เก็บข้อมูลได้ไม่จำกัดจำนวน โดยแต่ละแห่งมี Wiki มีระบบติดตามปัญหาให้ สามารถตรวจสอบโค้ดได้ ฯลฯ นอกจาก Git แล้ว บริการนี้ยังรองรับการรับและแก้ไขโค้ดผ่าน SVN และ Mercurial

  4. ทำไมเราต้องมีระบบควบคุมเวอร์ชัน?

    VCS ช่วยให้สามารถคืนไฟล์แต่ละไฟล์กลับไปเป็นรูปแบบก่อนหน้า คืนทั้งโปรเจ็กต์เป็นสถานะก่อนหน้า ดูการเปลี่ยนแปลงที่เกิดขึ้นเมื่อเวลาผ่านไป กำหนดว่าใครเป็นคนสุดท้ายที่ทำการเปลี่ยนแปลงโมดูลที่หยุดทำงานกะทันหัน ใครและเมื่อแนะนำบางประเภท ของข้อผิดพลาดในโค้ด ฯลฯ .. โดยทั่วไปหากใช้ VCS คุณทำลายทุกอย่างหรือสูญเสียไฟล์ทุกอย่างก็สามารถกู้คืนได้อย่างง่ายดาย

  5. ทั่วไปคืออะไร? มีการนำไปใช้งานใน Java อย่างไร?

    ข้อมูลทั่วไปเป็นประเภทที่กำหนดพารามิเตอร์ ด้วยความช่วยเหลือของพวกเขา คุณสามารถประกาศคลาส อินเทอร์เฟซ และวิธีการ โดยระบุประเภทข้อมูลเป็นพารามิเตอร์ ข้อมูลทั่วไปเพิ่มความปลอดภัยของประเภทให้กับภาษา

    ตัวอย่างการใช้งาน:

    class MyClass<T>{
      T obj;
      public MyClass(T obj){
        this.obj = obj;
      }
    }
    class MyClass<T>

    วงเล็บมุมใช้Tซึ่งเป็นชื่อของพารามิเตอร์ประเภท ชื่อนี้ใช้เป็นตัวยึดสำหรับชื่อของประเภทจริงที่ส่งไปยังชั้นเรียนMyClassเมื่อสร้างประเภทจริง นั่นคือ พารามิเตอร์ type Tถูกใช้ในคลาสทุกครั้งที่ต้องการพารามิเตอร์ 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 or char.

    *Так же считаю нужным упомянуть generic методы. Это методы вида:

    модификаторы <T, ...> возвращаемыйТип method name(T t, ...)

    Как я понял, если в качестве типа в сигнатуре метода используются параметры, необходимо перед типом возвращаемого значения их перечислить. Верно ли это?

    Более подробную информацию можно посмотреть по следующим linkм:

  6. What такое стирание типов?

    Внутри класса-дженерика не хранится информация о его типе параметре. Это и называется стиранием типов. На стадии компиляции происходит приведение an object класса к типу, который был указан при объявлении.

    Пример:

    ระดับ 35 คำตอบสำหรับคำถามสัมภาษณ์ในหัวข้อระดับ - 2
  7. What такое wildcard?

    Wildcard — это дженерик вида <?>, что означает, что тип может быть чем угодно. Используется, например, в коллекциях, где для всех коллекций базовым типом является Сollection<?>.

    Полезная link: Теория и практика Java. Эксперименты с generic-методами

  8. Расскажите про extends и super в Generic'ах?

    Whatбы наложить ограничение на wildcard необходимо использовать конструкции типа:

    • ? extends SomeClass — означает, что может быть использован любой класс-наследник SomeClass
    • ? super SomeClass — означает, что может быть использован класс SomeClass, либо класс-родитель (or интерфейс) SomeClass

    Это называется bounded wildcard.

    Для того, чтобы определиться с выбором между extends и super был придуман метод PECS.

    Подробно про это можно прочитать по ссылке ниже: Использование generic wildcards для повышения удобства Java API

  9. Как использовать wildcard?

    Пример использования wildcard:

    List<?> numList = new ArrayList<Integer>();

    Вопрос я не понял, но в принципе использование wildcard’ов рассматривается в материалах по linkм выше.

  10. В чем отличие ArrayList и ArrayList<?>

    Запись вида ArrayList называется raw type (обычный тип). Она эквивалентна записи вида ArrayList<T> и используется для обратной совместимости, т.к. до Java 1.5 не было дженерик коллекций. По возможности такой формы записи следует избегать.

    ArrayList<?> является супертипом для ArrayList.

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION