По традиции февраль — пиковый период для волны собеседований, и я вернулся в город третьего уровня в феврале 2014 года. Однако в то время я был настолько глуп, что не написал вопросы для интервью, благо вопросы для интервью, требуемые городами третьего эшелона, не были слишком чрезмерными, и я мог на них ответить.
Если у вас также есть планы сменить место работы через год, я все же рекомендую подготовиться заранее. Сегодня я тщательно подготовил для вас 13 вопросов для собеседования по ООП Java.Если вы найдете что-то полезное, не забудьте поставить лайк и поделиться.
Первый вопрос, что такое Java?
Java — это язык программирования высокого уровня, надежный, объектно-ориентированный и очень безопасный. Он был разработан компанией Sun в 1995 году, а основная разработка принадлежит Джеймсу Гослингу, известному как отец Java.
Фактически, на официальном сайте Oracle есть определение Java, которое выглядит следующим образом:
Java — это язык программирования и вычислительная платформа, впервые выпущенная компанией Sun Microsystems в 1995 году. Есть много приложений и веб-сайтов, которые правильно работают только с установленной Java, и таких приложений и веб-сайтов становится все больше. Java — это быстро, безопасно и надежно. От ноутбуков до центров обработки данных, от игровых приставок до научных суперкомпьютеров, от мобильных телефонов до Интернета — Java везде!
Второй вопрос, что такое ООП?
Объектно-ориентированное программирование — объектно-ориентированное программирование, сокращенно ООП, — это своего рода идея программирования. ООП рассматривает объект как базовую единицу программы, а объект содержит переменные-члены и методы для управления переменными-членами.
Процессно-ориентированное программирование рассматривает компьютерную программу как серию команд, то есть последовательное выполнение набора методов. Для упрощения разработки программы процессно-ориентированный метод дополнительно делится на подметоды, то есть сложность системы снижается за счет разделения крупноблочного метода на мелкоблочные.
В объектно-ориентированном программировании компьютерная программа рассматривается как набор объектов, и каждый объект может получать сообщения от других объектов и обрабатывать эти сообщения.Выполнение компьютерной программы представляет собой серию сообщений, передаваемых между различными объектами.
ООП имеет три основные характеристики:
- упаковка
- полиморфизм
- наследовать
Язык объектно-ориентированного программирования — это не только Java, но и C#, C++, Python и др. Если у интервьюера неторопливое настроение, он может также рассказать ему о «Нува создает человека» из учебника для начальной школы.
Когда Нюва захотела создать человека, первое, о чем она подумала, это как будет выглядеть созданный ею человек.Для удобства Нюва сделала шаблон по своему внешнему виду, и ей нужно было только следовать этому шаблону позже. В ООП этот шаблон называется классом.
Нува щипает человека по шаблону (классу), а этот человек является конкретным объектом, у людей много органов, таких как глаза, уши, нос, мозг, руки и ноги, а также возраст и рост. каждому человеку Каждому объекту будут даны различные основные характеристики. Кроме того, ущемленный человек должен иметь возможность ходить, есть, работать и выполнять другие действия.
В ООП базовые характеристики объектов называются переменными-членами, а поведение — методами, поэтому классы состоят из переменных-членов и методов; переменные-члены лучше всего скрывать, и когда людям нужно что-то сделать, они выполняются с помощью методов. . Акт раскрытия метода называется инкапсуляцией.
Нува считает, что человек слишком скучен, так что дайте ему компаньона, назовем его пока мужчиной и женщиной.И мужчины, и женщины основаны на этом шаблоне и имеют одинаковые основные характеристики и поведение, но некоторые характеристики ( Существуют различия в реализации между переменными) и поведением (методами), поэтому поведение классов, фабрикующих разные детали реализации по шаблону, называется полиморфизмом, то есть шаблон имеет две формы мужчины и женщины.
Let the Goddess in order to save humanity itself offspring, there is a relationship between father and son, the child class has the basic characteristics and behavior of the parent class, subclass can also change these characteristics and behaviors to achieve this parent-child relationship called наследование.
Третий вопрос, каковы характеристики Java?
- Объектно-ориентированный.
Обратитесь ко второму вопросу.
- Независимая платформа.
Java — это язык «написать один раз, запустить где угодно», поэтому программы, написанные на языке Java, обладают хорошей переносимостью, и гарантирует это механизм виртуальной машины Java. После появления виртуальной машины язык Java не требует перекомпиляции для работы на разных платформах.
Язык Java использует механизм виртуальной машины Java для защиты соответствующей информации о конкретной платформе, так что программа, скомпилированная на языке Java, должна только генерировать объектный код на виртуальной машине и может работать на различных платформах без изменений.
- Простота.
В Java отказались от многих функций, которые трудно понять в C++, таких как перегрузка операторов и множественное наследование, а в язык Java добавлен механизм сборки мусора, который решает проблему управления памятью и упрощает программирование.
- Поддерживается многопоточность.
Java поддерживает одновременное выполнение нескольких потоков и предоставляет механизм синхронизации между несколькими потоками.
- прочность.
Механизм строгого типа Java, обработка исключений, механизм сборки мусора и т. д. — все это важные гарантии надежности Java.
- высокая производительность.
С развитием JIT (как раз вовремя, состоится со временной компиляцией), Java проходит быстрее и быстрее.
Четвертый вопрос: является ли Java на 100% объектно-ориентированным?
нет. Java имеет 8 основных типов данных, включая логические, char, byte, short, int, long, float и double, ни один из которых не является объектом.
Пятый вопрос, что такое абстракция?
Абстракция относится к фильтрации информации, содержащейся в понятии или явлении, для определенной цели, удалению ненужной информации и сохранению только информации, имеющей отношение к определенной конечной цели. Например,кожаный футбол, мы можем отфильтровать его материал, чтобы получить более общую концепцию, котораямяч. С другой точки зрения, абстракция — это процесс упрощения вещей и понимания сути вещей.
В Java абстракция может быть реализована в двух формах: абстрактные классы и интерфейсы.
При определении абстрактного класса необходимо использовать ключевое слово abstract перед ключевым словом class.
public abstract class AbstractPlayer {
abstract void play();
}
Абстрактные классы могут быть унаследованы с помощью ключевого слова extends.
public class BasketballPlayer extends AbstractPlayer {
@Override
void play() {
System.out.println("我是张伯伦,篮球场上得过 100 分");
}
}
Интерфейс определяется ключевым словом interface, которое может содержать некоторые константы и методы.
public interface Electronic {
// 常量
String LED = "LED";
// 抽象方法
int getElectricityUse();
// 静态方法
static boolean isEnergyEfficient(String electtronicType) {
return electtronicType.equals(LED);
}
// 默认方法
default void printDescription() {
System.out.println("电子");
}
}
Интерфейс может быть реализован с помощью ключевого слова imports.
public class Computer implements Electronic {
public static void main(String[] args) {
new Computer();
}
@Override
public int getElectricityUse() {
return 0;
}
}
Шестой вопрос, что такое инкапсуляция?
Инкапсуляция скрывает часть информации класса внутри класса и не позволяет внешним программам напрямую обращаться к ней, операция и доступ к скрытой информации могут быть реализованы только через методы, предоставляемые классом.
Например, внутренняя часть компьютера чрезвычайно сложна, с основной платой, ЦП, жестким диском и памятью, но обычным пользователям не нужно знать его внутренние детали, им не нужно знать модель основной платы, Основная частота ЦП, размер жесткого диска и памяти, поэтому производители компьютеров используют Шасси инкапсулирует компьютер и предоставляет некоторые интерфейсы, такие как мышь, клавиатура и монитор.После этого пользователям очень удобно использовать компьютер.
Основная функция инкапсуляции заключается в том, что мы можем изменять наш собственный код реализации, не изменяя фрагменты программы, которые вызывают наш код.
Конкретные шаги для достижения инкапсуляции следующие:
- Измените видимость переменных-членов, чтобы ограничить доступ к свойствам, обычно устанавливаемым как частные.
- Создайте пару методов присваивания (сеттера) и метода значения (геттера) для каждой переменной-члена, обычно устанавливаемой как общедоступная, для чтения и записи свойств.
- В методы присваивания и значения добавьте операторы управления переменными-членами (судя о законности значений переменных-членов).
public class Student {
private int id;
private String name;
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
public static void main(String args[]) {
Student student = new Student();
student.setId(1034);
student.setName("沉默王二");
System.out.println("学生 id " + student.getId());
System.out.println("学生姓名 " + student.getName());
}
}
Вопрос 7, в чем разница между абстракцией и инкапсуляцией?
Абстракция фокусируется только на релевантных данных объекта и скрывает все детали потенциально нерелевантного поведения. Он скрывает детали фона, но выделяет ключевые моменты, чтобы уменьшить сложность и повысить эффективность. Абстракция связана с идеями, а не с событиями.
Инкапсуляция связывает переменные-члены и методы в один класс, ограничивая доступ к определенным переменным-членам. Инкапсуляция означает сокрытие переменных-членов для защиты их от внешнего доступа, чтобы изменения в одной части приложения не влияли на другие части.
-
Абстракция и инкапсуляция в "определениеРазличия в "- Абстракция подчеркивает все фундаментальные аспекты объекта, скрывая несущественные детали для повышения эффективности и устранения сложности. Инкапсуляция - это механизм сокрытия данных, который упаковывает данные в капсулу для ограничения доступа из внешнего мира.
-
Абстракция и инкапсуляция в "Функция— абстракция лишь подчеркивает базовую функциональность, упрощающую сложные программы, в то время как инкапсуляция — это связывание переменных-членов и методов манипулирования переменными-членами в единый класс.
-
Абстракция и инкапсуляция в "выполнить” — абстракция достигается абстрактными классами и интерфейсами, а инкапсуляция достигается модификаторами доступа.
Восьмой вопрос, что такое наследование?
Наследование — очень мощный механизм в объектно-ориентированном программировании.В Java ключевое слово extends используется для представления отношения наследования. Когда класс создается, он всегда наследуется, и если наследуемый класс не указан явно, он всегда неявно наследуется от объекта корневого класса.
class Person {
public Person() {
}
}
class Man extends Person {
public Man() {
}
}
Класс Person неявно наследует класс Object, поэтому класс Person автоматическиhashCode()
,equals()
,toString()
и другие методы.
Класс Man наследует класс Person, поэтому класс Person называется родительским классом, а класс Man называется дочерним классом. Если между двумя классами существует отношение наследования, подкласс автоматически наследует методы и переменные-члены родительского класса, а методы и переменные-члены родительского класса могут вызываться в подклассе.
Java допускает только одиночное наследование, что означает, что класс может явно наследовать не более одного родительского класса. Но класс может быть унаследован несколькими классами, что означает, что класс может иметь несколько подклассов.
Вопрос 9, что такое полиморфизм?
Полиморфизм — это способность одного и того же поведения иметь несколько различных проявлений, благодаря чему программа может иметь хорошую расширяемость и, как правило, может обрабатывать объекты всех классов.
В отношениях наследования, если подкласс определяет метод с точно такой же сигнатурой, что и у суперкласса, это называется переопределением метода.
public class Shape {
public void getArea() {
System.out.println("形状");
}
}
public class Rectangle extends Shape {
@Override
public void getArea() {
System.out.println("矩形");
}
public static void main(String args[]) {
Shape shape = new Rectangle();
shape.getArea();
}
}
Переопределение метода отличается от перегрузки метода.Если в классе есть несколько методов с одинаковым именем, но разным количеством параметров, мы обычно называем эти методы перегрузкой метода.
public class Calculator {
public int subtract(int a, int b) {
return a - b;
}
public double subtract(double a, double b) {
return a - b;
}
public static void main(String args[]) {
Calculator calculator = new Calculator();
System.out.println("150 和 12 相差 " + calculator.subtract(150, 12));
System.out.println("15.5 和 15.4 相差 " + calculator.subtract(15.50, 15.40));
}
}
Как видно из следующего рисунка, подклассы Circle, Triangle и Square наследуют родительский класс Shape и переписываютdraw()
Методы используются для рисования различных фигур.
Переопределение метода используется для обеспечения специальной реализации метода, объявленного родительским классом, что является основным условием реализации полиморфизма.
Десятый вопрос, как отличить ассоциацию, агрегацию и комбинацию?
Примерами отношений, которые могут отражать ассоциации, являются отношения между клиентами и заказами, отношения между компаниями и сотрудниками и отношения между пользователями и компьютерами. Два класса, вовлеченные в ассоциацию, находятся на одном уровне.
class Computer {
public void develop() {
}
}
class Person {
private Computer computer;
public Person(Computer computer) {
this.computer = computer;
}
public void work() {
computer.develop();
}
}
Агрегация – это отношение между целым и отдельным. Два класса, вовлеченные в отношения агрегации, находятся на уровне неравенства. Один представляет целое, а другой представляет часть. Он отражает отношение «имеет», например, класс и ученик. Если класс не существует, ученик может все-еще существует.
Другим примером является связь между любым адресом.
public class Person {
private Address address;
}
class Address {
private String city;
private String state;
private String country;
}
Отношение композиции является более сильным отношением, чем отношение агрегации. Оно отражает отношение "есть-есть", такое как дом и комната. Если дом не существует, нет необходимости в существовании комнаты.
Другим примером является взаимосвязь между автомобилем и шинами, дверями и окнами.
public class Car {
private Tire[] tires;
private Door[] doors;
private Window[] windows;
}
class Tire {
}
class Door {
}
class Steering {
}
class Window {
}
Что ж, давайте сначала разберемся с вопросами собеседования по объектно-ориентированному программированию. Было бы здорово, если это поможет вам на собеседовании после следующего года. Если нет, повторите знания по инкапсуляции, наследованию и полиморфизму. Это тоже необходимо.
PS: хороший друг, гид братаИнтервью Assault Четвертое изданиеЕго можно скачать, звезда GitHub — 95,3 тыс., что действительно здорово. Контент, добавленный/измененный в четвертом издании, показан на рисунке ниже.
Если вы не знаете, как его получить, я дам вам один:
Связь:disk.baidu.com/is/19VOB UI_in…Пароль: 413с
❤ После прочтения двух вещей:
Если вы найдете этот контент полезным, я хотел бы пригласить вас сделать мне две услуги:
- подобно, чтобы больше людей могли видеть этот контент
- Подписывайтесь на меня, пусть будут долгосрочные отношения
Спасибо за вашу поддержку!