-
"বিচ্ছিন্ন করা"
public static void main(String args[])
।ফ্রেশারদের জন্য জনপ্রিয় জাভা ইন্টারভিউ প্রশ্নগুলির মধ্যে একটি, এবং খুব সহজ একটি।
-
public
একটি অ্যাক্সেস মডিফায়ার। আমরা এই পদ্ধতিতে অ্যাক্সেস নির্দিষ্ট করতে এটি ব্যবহার করি। এখানে মডিফায়ার হল "পাবলিক", তাই যেকোনো ক্লাসের এই পদ্ধতিতে অ্যাক্সেস রয়েছে। -
static
. এই জাভা কীওয়ার্ডের অর্থ হল আমরা ক্লাসের একটি নতুন অবজেক্ট তৈরি না করে এই পদ্ধতিটি ব্যবহার করি। -
Void
পদ্ধতির রিটার্ন প্রকার। এর মানে হল যে পদ্ধতিটি কোন মান ফেরত দেয় না। -
main
পদ্ধতির নাম। JVM এটিকে একটি অ্যাপ্লিকেশনের এন্ট্রি পয়েন্ট হিসাবে "জানে" (এটির একটি নির্দিষ্ট স্বাক্ষর থাকা উচিত)।Main
একটি পদ্ধতি যেখানে প্রধান মৃত্যুদন্ড ঘটে। -
String args[]
. এটি প্রধান পদ্ধতিতে পাস করা প্যারামিটার। এখানে আমাদের কাছে স্ট্রিং টাইপের আর্গুমেন্ট রয়েছে যা আপনি যখন চালান তখন আপনার জাভা অ্যাপ্লিকেশন গ্রহণ করে। আপনি তাদের টার্মিনালে টাইপ করতে পারেন।
-
-
equals()
এবং মধ্যে পার্থক্য কি==
?প্রথমত, "
==
" একটি অপারেটর যেখানেequals()
একটি পদ্ধতি। আমরা==
রেফারেন্স তুলনা (বা ঠিকানা তুলনা) এবংequals()
বিষয়বস্তু তুলনার জন্য পদ্ধতির জন্য অপারেটর ব্যবহার করি। এর মানে হল যে বস্তুর মান তুলনা করার==
সময় উভয় বস্তু একই মেমরি অবস্থান নির্দেশ করে কিনা তা পরীক্ষা করে ।equals()
-
আমরা কি পদ্ধতি ছাড়া একটি প্রোগ্রাম চালাতে পারি
main()
?অনেক জাভা মৌলিক ইন্টারভিউ প্রশ্ন সত্যিই সহজ. এটার মত. তাই সংক্ষিপ্ত উত্তর হল: হ্যাঁ, আমরা পারি। উদাহরণস্বরূপ আমরা স্ট্যাটিক ব্লক ব্যবহার করে এটি করতে পারি।
আপনি স্ট্যাটিক ডেটা সদস্য শুরু করতে স্ট্যাটিক ব্লক ব্যবহার করতে পারেন। এটি
main
ক্লাস লোড করার সময় পদ্ধতির আগে কার্যকর করা হয়।class Example{ Static{ System.out.println("static block is invoked"); } public static void main(String args[]){ System.out.println("Now main method"); } }
আউটপুট হল:
static block is invoked Now main method
মোট প্রধান পদ্ধতি অনুপস্থিতি সম্পর্কে কি? আপনি যদি মূল পদ্ধতি ছাড়াই একটি সাধারণ ক্লাস চালানোর চেষ্টা করেন তবে আপনি পরবর্তী ত্রুটি পেয়েছেন: ক্লাস টেস্টে প্রধান পদ্ধতিটি পাওয়া যায় নি, অনুগ্রহ করে প্রধান পদ্ধতিটিকে সংজ্ঞায়িত করুন: পাবলিক স্ট্যাটিক ভ্যাইড মেইন (স্ট্রিং [] আর্গস) বা একটি জাভাএফএক্স অ্যাপ্লিকেশন ক্লাস অবশ্যই javafx.application.Application প্রসারিত করতে হবে। ত্রুটিটি নিজেই বলে যে এটি যদি একটি JavaFX অ্যাপ্লিকেশন হয় এবং ক্লাসটি javafx.application.Application থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয়, তাহলে এটি সম্ভব।
-
immutable
বস্তু কি ? আপনিimmutable
বস্তু তৈরি করতে পারেন?immutable
আপনি তাদের তৈরি করার পরে একটি শ্রেণীর বস্তু পরিবর্তন করতে পারবেন না । তাই একবার আপনি এগুলি তৈরি করলে, আপনি সেগুলি পরিবর্তন করতে পারবেন না। আপনি যদিImmutable
অবজেক্ট পরিবর্তন করার চেষ্টা করেন তবে আপনি একটি নতুন অবজেক্ট (ক্লোন) পাবেন এবং তৈরি করার সময় এই ক্লোনটি পরিবর্তন করুন।একটি ভাল উদাহরণ হল
String
, এটিimmutable
জাভাতে রয়েছে। এর মানে আপনি বস্তুটি নিজেই পরিবর্তন করতে পারবেন না, তবে আপনি বস্তুর রেফারেন্স পরিবর্তন করতে পারেন। -
নিচের কোডে কয়টি অবজেক্ট তৈরি করা হয়?
জাভা টেকনিক্যাল ইন্টারভিউ প্রশ্নগুলির মধ্যে একটি যা #4 বিকল্প করে।
String s1="Hello"; String s2="Hello"; String s3="Hello";
উত্তরটি "কেবল একটি" কারণ জাভাতে একটি স্ট্রিং পুল রয়েছে। যখন আমরা new() অপারেটর ব্যবহার করে একটি স্ট্রিং অবজেক্ট তৈরি করি, তখন এটি হিপ মেমরিতে একটি নতুন অবজেক্ট তৈরি করে। যদি আমরা স্ট্রিং আক্ষরিক সিনট্যাক্স ব্যবহার করি, যেমন আমাদের উদাহরণে, এটি স্ট্রিং পুল থেকে একটি বিদ্যমান বস্তু ফিরিয়ে দিতে পারে, যদি এটি ইতিমধ্যে বিদ্যমান থাকে।
-
নিচের কোডে কয়টি অবজেক্ট তৈরি করা হয়?
String s = new String("Hello");
2টি বস্তু আছে। একটি স্ট্রিং ধ্রুবক পুলে (যদি ইতিমধ্যে উপস্থিত না থাকে) এবং অন্যটি হিপে।
-
জাভাতে ক্লাস এবং ক্লাসের
String
মধ্যেStringBuilder
পার্থক্য কী ?StringBuffer
শীর্ষ জাভা ইন্টারভিউ প্রশ্ন নেতা এক আছে.
প্রথমত
String
একটি অপরিবর্তনীয় ক্লাস। তার মানে আপনি একবার তৈরি হয়ে গেলে এর বিষয়বস্তু পরিবর্তন করতে পারবেন না। যখনStringBuffer
এবংStringBuilder
পরিবর্তনযোগ্য ক্লাস, তাই আপনি পরে সেগুলি পরিবর্তন করতে পারেন। যদি আমরাString
বস্তুর বিষয়বস্তু পরিবর্তন করি, এটি একটি নতুন স্ট্রিং তৈরি করে তাই এটি মূলটিকে পরিবর্তন করে না। যে কারণে এর সাথে পারফরম্যান্সStringBuffer
এর চেয়ে ভালোString
।এর মধ্যে প্রধান পার্থক্য
StringBuffer
এবংStringBuilder
এরStringBuffer
পদ্ধতিগুলি সিঙ্ক্রোনাইজ করা হয় যখনStringBuilder
'গুলি হয় না। -
String
আক্ষরিক এবং অপারেটর ব্যবহার করে তৈরি করা হয়েছে কোন পার্থক্য আছেnew()
?এখানে. যদি আমরা অপারেটরের সাথে একটি স্ট্রিং তৈরি করি
new()
, এটি হিপে এবং স্ট্রিং পুলে প্রদর্শিত হয় (যদি ইতিমধ্যে উপস্থিত না থাকে)। যদি আপনিString
একটি আক্ষরিক ব্যবহার করে তৈরি করেন, এটি স্ট্রিং পুলে তৈরি করা হয় (যদি ইতিমধ্যে উপস্থিত না থাকে)। একটি স্ট্রিং পুল হল স্তূপের মধ্যে একটি স্টোরেজ এলাকা, যা স্ট্রিং লিটারেল সংরক্ষণ করে। -
আপনি জাভাতে ওভাররাইড
private
বা পদ্ধতি করতে পারেন?static
রুকিদের জন্য জাভা কৌশলী ইন্টারভিউ প্রশ্নগুলির মধ্যে একটি। আপনি সত্যিই জাভাতে ওভাররাইড
private
বা পদ্ধতি করতে পারবেন না ।static
আপনি পদ্ধতিগুলিকে ওভাররাইড করতে পারবেন না
private
কারণ ব্যক্তিগত অ্যাক্সেস নির্দিষ্টকরণের সুযোগ শুধুমাত্র ক্লাসের মধ্যে রয়েছে। আপনি যখন কিছু ওভাররাইড করতে যাচ্ছেন, তখন আমাদের অভিভাবক এবং শিশু শ্রেণি থাকা উচিত। যদি সুপারক্লাসের পদ্ধতি হয়private
, চাইল্ড ক্লাস এটি ব্যবহার করতে পারবে না, এবং চাইল্ড ক্লাসের পদ্ধতিগুলিকে নতুন পদ্ধতি হিসাবে গণ্য করা হবে (ওভাররাইড করা হয়নি)।Static
পদ্ধতিগুলিও ওভাররাইড করা যায় না, কারণstatic
পদ্ধতিগুলি ক্লাসেরই অংশ, এবং ক্লাসের কোনও বস্তুর অংশ নয়।static
নিশ্চিত আপনি শিশু ক্লাসে একই স্বাক্ষর সহ একই পদ্ধতি ঘোষণা করতে পারেন , তবে আবার, সেগুলিকে নতুন পদ্ধতি হিসাবে গণ্য করা হবে। -
Abstract Class
এবং মধ্যে পার্থক্যInterface
জনপ্রিয় জাভা ডেভেলপার ইন্টারভিউ প্রশ্নগুলির মধ্যে একটি যা OOP নীতির উপর নির্ভর করে। প্রথমত, জাভাতে
interface
একটি আচরণ সংজ্ঞায়িত করে এবংabstract class
শ্রেণিবিন্যাস তৈরি করে।বিমূর্ত ক্লাস ইন্টারফেস বিমূর্ত শ্রেণীতে একটি মেথড বডি (অ-বিমূর্ত পদ্ধতি) থাকা সম্ভব ইন্টারফেসে শুধুমাত্র বিমূর্ত পদ্ধতি থাকতে পারে। জাভা 8 বা তার পরবর্তীতে, ডিফল্ট পদ্ধতি সংজ্ঞায়িত করা এবং সরাসরি ইন্টারফেসে প্রয়োগ করা সম্ভব হয়েছে। এছাড়াও, জাভা 8 এর ইন্টারফেসে স্ট্যাটিক পদ্ধতি থাকতে পারে। ইনস্ট্যান্স ভেরিয়েবল বিমূর্ত শ্রেণীতে হতে পারে একটি ইন্টারফেসে উদাহরণ ভেরিয়েবল থাকতে পারে না। কনস্ট্রাক্টরদের অনুমতি দেওয়া হয় ইন্টারফেসের কোনো কনস্ট্রাক্টর থাকতে পারে না। স্ট্যাটিক পদ্ধতি অনুমোদিত স্ট্যাটিক পদ্ধতি অনুমোদিত নয় ক্লাসে শুধুমাত্র একজন বিমূর্ত অভিভাবক থাকতে পারে একটি ইন্টারফেস বিভিন্ন ক্লাস বাস্তবায়ন করতে পারে বিমূর্ত শ্রেণী ইন্টারফেসের বাস্তবায়ন প্রদান করতে পারে। ইন্টারফেস বিমূর্ত শ্রেণীর বাস্তবায়ন প্রদান করতে পারে না। একটি বিমূর্ত ক্লাসকে অন্য জাভা ক্লাস প্রসারিত করতে এবং একাধিক জাভা ইন্টারফেস বাস্তবায়নের অনুমতি দেওয়া হয়। একটি ইন্টারফেস শুধুমাত্র অন্য জাভা ইন্টারফেস প্রসারিত করার অনুমতি দেওয়া হয়। একটি জাভা বিমূর্ত ক্লাস ব্যক্তিগত এবং সুরক্ষিত শ্রেণীর সদস্য থাকতে পারে জাভা ইন্টারফেসের সদস্যরা ডিফল্টরূপে সর্বজনীন -
আমরা কি
static
একটিabstract
ক্লাসে ভেরিয়েবল এবং পদ্ধতি ঘোষণা করতে পারি?static
হ্যাঁ, পদ্ধতিতে ভেরিয়েবল এবং পদ্ধতি ঘোষণা করা সম্ভবabstract
। স্ট্যাটিক প্রসঙ্গ অ্যাক্সেস করার জন্য একটি বস্তু তৈরি করার কোন প্রয়োজন নেই।abstract
তাই আমরা ক্লাসের নাম ব্যবহার করে ক্লাসের ভিতরে ঘোষিত স্ট্যাটিক কনটেক্সট অ্যাক্সেস করতে পারিabstract
। -
JVM দ্বারা কি ধরনের মেমরি এলাকা বরাদ্দ করা হয়?
ক্লাস এরিয়া পারক্লাস স্ট্রাকচার সংরক্ষণ করে, উদাহরণস্বরূপ, রানটাইম ধ্রুবক পুল, ক্ষেত্র, পদ্ধতি ডেটা এবং পদ্ধতিগুলির জন্য সমস্ত কোড।
হিপ হল একটি রানটাইম ডেটা এলাকা যেখানে মেমরি বস্তুর জন্য বরাদ্দ করা হয়।
স্ট্যাক স্টোর ফ্রেম. এটি স্থানীয় ভেরিয়েবল এবং আংশিক ফলাফল ধারণ করে এবং পদ্ধতি আহ্বান এবং রিটার্নে অংশ নেয়। প্রতিটি থ্রেডের একটি ব্যক্তিগত JVM স্ট্যাক রয়েছে, থ্রেডের মতো একই সময়ে তৈরি করা হয়েছে। প্রতিবার একটি পদ্ধতি চালু করার সময় একটি নতুন ফ্রেম তৈরি করা হয়। একটি ফ্রেম ধ্বংস হয়ে যায় যখন এটির পদ্ধতি আহ্বান সম্পূর্ণ হয়।
প্রোগ্রাম কাউন্টার রেজিস্টারে বর্তমানে কার্যকর করা জাভা ভার্চুয়াল মেশিন নির্দেশের একটি ঠিকানা রয়েছে।
নেটিভ মেথড স্ট্যাকে অ্যাপ্লিকেশনটিতে ব্যবহৃত সমস্ত নেটিভ পদ্ধতি রয়েছে।
-
জাভাতে কেন একাধিক উত্তরাধিকার অনুমোদিত নয়?
এটা সত্যিই জটিল হবে. তিনটি শ্রেণী কল্পনা করুন
A
,B
এবংC
এবংC
উত্তরাধিকারসূত্রেA
এবংB
. এখন,A
এবংB
ক্লাসে একই পদ্ধতি আছে এবং আপনি এটিকে চাইল্ড ক্লাস অবজেক্ট থেকে কল করেন... কোনটি?A
এর বাB
এর? এখানে আমাদের অস্পষ্টতা আছে।যদি আপনি দুটি ক্লাসের উত্তরাধিকারী হওয়ার চেষ্টা করেন তবে জাভা রেন্ডার কম্পাইল টাইম ত্রুটি।
-
আমরা
main()
পদ্ধতি ওভারলোড করতে পারি?main
অবশ্যই, মেথড ওভারলোডিং ব্যবহার করে আমাদেরকে একটি জাভা প্রোগ্রামে অনেক পদ্ধতির অনুমতি দেওয়া হয়েছে । চেষ্টা কর! -
আমরা কি একটি কনস্ট্রাক্টর হিসাবে ঘোষণা করতে পারি
final
?না। একটি কনস্ট্রাক্টর হিসাবে ঘোষণা করা যাবে না
final
কারণ এটি উত্তরাধিকারসূত্রে পাওয়া যাবে না। তাই কনস্ট্রাক্টরদের হিসেবে ঘোষণা করাটা বুদ্ধিহীনfinal
। যাইহোক, যদি আপনি এটি করার চেষ্টা করেন, জাভা কম্পাইলার আপনাকে একটি ত্রুটি নিক্ষেপ করে। -
আমরা কি একটি ইন্টারফেস ঘোষণা করতে পারি
final
?না, আমরা এটা করতে পারি না। একটি ইন্টারফেস হতে পারে না
final
কারণ ইন্টারফেসটি তার সংজ্ঞা অনুযায়ী কিছু শ্রেণী দ্বারা প্রয়োগ করা উচিত। অতএব, একটি ইন্টারফেস তৈরি করার কোন অর্থ নেইfinal
। যাইহোক, যদি আপনি এটি করার চেষ্টা করেন, কম্পাইলার একটি ত্রুটি দেখাবে। -
static binding
এবং মধ্যে পার্থক্য কিdynamic binding
?যেটি
binding
কম্পাইলার দ্বারা কম্পাইলের সময়ে সমাধান করা যায় তাকে বলা হয়static
বা প্রারম্ভিক বাঁধন।Binding
সমস্তstatic
,private
এবংfinal
পদ্ধতিগুলি কম্পাইল-টাইমে করা হয়।কম্পাইলার
Dynamic binding
কল করার জন্য একটি পদ্ধতি নির্বাচন করতে পারে না। ওভাররাইডিং এর একটি নিখুঁত উদাহরণdynamic binding
। অভিভাবক এবং শিশু উভয় শ্রেণীরই ওভাররাইড করার পদ্ধতি একই।Static Binding class Cat{ private void talk() {System.out.println("cat is mewing..."); } public static void main(String args[]){ Cat cat=new Cat(); cat.talk(); } } Dynamic Binding class Animal{ void talk(){ System.out.println("animal is talking..."); } } class Cat extends Animal{ void talk(){ System.out.println("cat is talking..."); } public static void main(String args[]){ Animal animal=new Cat(); animal.talk(); } }
-
কিভাবে জাভাতে একটি পঠনযোগ্য ক্লাস তৈরি করবেন?
আপনি ক্লাসের সমস্ত ক্ষেত্র ব্যক্তিগত করে এটি করতে পারেন। শুধুমাত্র পঠনযোগ্য শ্রেণীতে শুধুমাত্র গেটার পদ্ধতি রয়েছে যা ক্লাসের ব্যক্তিগত সম্পত্তিকে পদ্ধতিতে ফিরিয়ে দেয়
main
। আপনি এই সম্পত্তি সংশোধন করতে সক্ষম নন, কারণ সেটটার পদ্ধতির অভাব।public class HockeyPlayer{ private String team ="Maple leaf"; public String getTeam(){ return team; } }
-
কিভাবে জাভাতে শুধুমাত্র লেখার জন্য ক্লাস তৈরি করবেন?
আবার, আপনার ক্লাসের সমস্ত ক্ষেত্র তৈরি করা উচিত
private
। এখন, আপনার শুধুমাত্র লেখার ক্লাসে শুধুমাত্র সেটার পদ্ধতি থাকা উচিত এবং কোন গেটার নেই। অতএব, আমরা ক্লাসের বৈশিষ্ট্যগুলি পড়তে পারি না।public class HockeyPlayer{ private String team; public void setTeam(String college){ this.team = team; } }
-
প্রতিটি
try
ব্লকের পরে একটিcatch
ব্লক অবশ্যই থাকবে, তাই না?না। এটি একটি প্রয়োজনীয়তা নয়. প্রতিটি
try
ব্লক একটি ব্লক ছাড়া হতে পারেcatch
. এটি একটি ক্যাচব্লক বা অবশেষে একটি ব্লক বা এমনকি সেগুলি ছাড়াই অনুসরণ করা যেতে পারে।public class Main{ public static void main(String []args){ try{ int variable = 1; System.out.println(variable/0); } finally { System.out.println("the other part of the program..."); } } }
আউটপুট:
Exception in thread main java.lang.ArithmeticException:/ by zero the other part of the program...
আরও একটি উদাহরণ:class Main { public static void main(String[] args) throws IOException { try(InputStreamReader inputStreamReader = new InputStreamReader(System.in); BufferedReader reader = new BufferedReader(inputStreamReader)){ System.out.println("test"); } } }
আউটপুট:
test
PS: জাভা 8 এর আগে ইন্টারফেসে পদ্ধতিগুলি কেবল বিমূর্ত হতে পারত। জাভা 8 বা তার পরবর্তীতে, ডিফল্ট পদ্ধতি সংজ্ঞায়িত করা এবং সরাসরি ইন্টারফেসে প্রয়োগ করা সম্ভব হয়েছে। -
throw
এবং কীওয়ার্ডের মধ্যে পার্থক্য কীthrows
?Throws
একটি ব্যতিক্রম ঘোষণা করতে ব্যবহৃত হয়, তাই এটি ব্লকের মতোই কাজ করেtry-catch
।Throw
কীওয়ার্ড একটি পদ্ধতি বা কোডের অন্য কোন ব্লক থেকে স্পষ্টভাবে একটি ব্যতিক্রম নিক্ষেপ করতে ব্যবহৃত হয়।Throw
ক্লাসের একটি উদাহরণ দ্বারা অনুসরণ করা হয়Exception
এবং ব্যতিক্রম শ্রেণীর নাম দ্বারা থ্রোস অনুসরণ করা হয়।Throw
একটি ব্যতিক্রম নিক্ষেপ করার জন্য মেথড বডিতে ব্যবহৃত হয়।Throws
পদ্ধতিতে উপস্থিত বিবৃতিগুলিতে ঘটতে পারে এমন ব্যতিক্রমগুলি ঘোষণা করতে একটি পদ্ধতি স্বাক্ষরে ব্যবহৃত হয়।এটিকে একবারে একটি ব্যতিক্রম নিক্ষেপ করার অনুমতি দেওয়া হয় তবে আপনি
throw
কীওয়ার্ড ব্যবহার করে একাধিক ব্যতিক্রম ঘোষণা করে তাদের পরিচালনা করতে পারেন। আপনি একাধিক ব্যতিক্রম ঘোষণা করতে পারেন, যেমন,public void method()throws IOException
,SQLException
।
শীর্ষ 21 জাভা ইন্টারভিউ প্রশ্ন
জাভা সাক্ষাত্কারের অগণিত প্রশ্ন রয়েছে এবং আমরা সেগুলি এক নিবন্ধে সংগ্রহ করতে পারি না। যাইহোক, আপনি এখানে কিছু খুব সাধারণ জাভা ইন্টারভিউ প্রশ্ন পেতে পারেন, আইটি কোম্পানির এইচআর-ম্যানেজারদের মতে।
GO TO FULL VERSION