CodeGym /جاوا بلاگ /Random-UR /جاوا کے کام ایک موڑ کے ساتھ: ہیلو، انٹرویوز!
John Squirrels
سطح
San Francisco

جاوا کے کام ایک موڑ کے ساتھ: ہیلو، انٹرویوز!

گروپ میں شائع ہوا۔
کوڈ جیم کے طلباء کے بہترین دوست پروگرامنگ ٹاسک، جاوا، اور ٹاسک ویلیڈیٹر ہیں۔ پھر بھی، ایک وقت ایسا آتا ہے جب ہر پاداوان ڈویلپر کو مشکل راستے سے ہٹنا شروع کر دینا چاہیے، اپنے چھوٹے پراجیکٹس ایجاد کرنا اور انٹرویو کے لیے خود کو تیار کرنا چاہیے۔ کوئی سوچے گا کہ انٹرویو میں بالکل وہی عملی جاوا کام ہوں گے جو اس کورس میں پائے جاتے ہیں۔ اور اس طرح زیادہ تر معاملات میں ایسا ہوتا ہے، لیکن کچھ کمپنیاں چال سوالات یا کچھ ناواقف پوچھنا پسند کرتی ہیں۔ دباؤ والے انٹرویو کے دوران جھنجھلاہٹ سے بچنے کے لیے، گھر پر جاوا کے اسی طرح کے کاموں کو خود ہی حل کرنے کی کوشش کرنا مفید ہے۔
جاوا کے کام ایک موڑ کے ساتھ: ہیلو، انٹرویوز!  - 1
اس آرٹیکل میں، ہم ایسے 5 مشکل کاموں کو دریافت کریں گے۔ ہمارا مشورہ ہے کہ آپ پہلے شرائط کو پڑھیں اور انہیں خود حل کرنے کی کوشش کریں۔ اور ایک اور چیز: ہر روز اس کورس میں جاوا ٹاسکس کرنا نہ بھولیں!

ٹاسک 1: شروع سے ایک لامحدود لوپ بنائیں

کوڈ کا ایک بلاک فراہم کیا گیا ہے۔ لوپ کو لامحدود بنانے کے لیے اس میں شامل کریں۔
class ToInfinity {
    public static void main(String[] args) {

// Insert code here

        for (int i = start; i <= start + 1; i++) {
             /* This should be an infinite loop, but don't change anything here */
        }
    }
}
" یہ مشکل نہیں ہے، " آپ کہتے ہیں. آپ نے اپنے آپ کو اس منظر نامے میں بار بار پایا ہے: جاوا ٹاسک کو مکمل کرتے ہوئے، آپ نے ایک لامحدود لوپ بنایا اور اس سے چھٹکارا پانے کے بارے میں سوچنا پڑا۔ ٹھیک ہے، یہ ارد گرد کا دوسرا راستہ ہے. یہاں مشکل حصہ ہے: آپ خود لوپ یا اس کے باہر نکلنے کی شرائط کو تبدیل نہیں کرسکتے ہیں۔ صرف دو تکرار ہیں۔ لیکن، وہ ایک لامحدود لوپ بنانے کے لیے کافی ہیں۔ ایسا لگتا ہے کہ اسے صرف دو تکرار کے لیے عمل میں لانا چاہیے، لیکن آپ اوور فلو کا استعمال کرکے اسے لامحدود بنا سکتے ہیں۔ کیا آپ نے پہلے ہی اندازہ لگایا ہے کہ کیسے؟

حل

اوور فلو کی وجہ سے، Integer.MAX_VALUEوہ زیادہ سے زیادہ قیمت ہے جسے کوئی intجاوا میں اسٹور کر سکتا ہے۔ اگر آپ Integer.MAX_VALUEاس قدر تک پہنچ جاتے ہیں اور اس میں اضافہ کرتے ہیں، تو آپ واپس Integer.MIN_VALUE، یا اس کے بجائے، سب سے کم ممکنہ Integerقدر پر واپس چلے جاتے ہیں۔ اس طرح، جاوا کے اس کام کو مکمل کرنے کے لیے، ہمیں صرف متغیر intکو زیادہ سے زیادہ قدر سے کم 1 تفویض کرنے کی ضرورت ہے۔ startاس کام کے لیے جاوا کوڈ:
class ToInfinity {
    public static void main(String[] args) {
        int start = Integer.MAX_VALUE - 1;
        for (int i = start; i <= start + 1; i++) {
            // Infinite loop
            System.out.println(i); // Be sure we are in an infinite loop
        }
    }
}
کیا ہوتا ہے؟ ہم start=2147483645 (Integer.MAX_VALUE-1) سے شروع کرتے ہیں۔ اگلی تکرار میں، قدر 2147483645، پھر 2147483646، پھر -2147483648، -2147483647... اور اسی طرح بن جاتی ہے۔

ٹاسک 2: ایک قابل عمل تبصرہ تخلیق کریں۔

ٹھیک ہے، ہم یہاں ہیں! پہلے ہی سبق سے، ہم نے سنا ہے کہ تبصروں پر عمل نہیں کیا جاتا ہے۔ اسی لیے انہیں تبصرے کہتے ہیں۔ ہمارا خیال ہے کہ اس کام کا حل ہمیشہ جاوا پروگرامرز، یہاں تک کہ تجربہ کاروں کے لیے بھی واضح نہیں ہوگا۔ تاہم، JVM کو تبصرہ کرنے کا ایک مشکل (لیکن "قانونی") طریقہ ہے۔ کیا آپ سمجھ سکتے ہیں کہ ہم کہاں جا رہے ہیں؟ اندازہ لگانے کی کوشش کریں!

حل

اس کام کے لیے جاوا کوڈ:
public class ExecutableComment {
    public static void main(String[] args) {
        // The comment below will be executed!
        // \u000d System.out.println("executable comment");
    }
}
اگر ہم اس جاوا کوڈ کو IDE میں داخل کرتے ہیں، تو ہمیں کیا ملے گا:
executable comment
اس کی وجہ یہ ہے کہ جاوا کمپائلر یونیکوڈ کیریکٹر کو \u000dایک نئی لائن کے طور پر تشریح کرتا ہے، اور ہمارے کوڈ کو اس طرح پڑھتا ہے: اس کام کے لیے جاوا کوڈ، جیسا کہ کمپائلر نے اس کی تشریح کی ہے۔
public class ExecutableComment {
    public static void main(String[] args) {
        // The comment below will be executed!
        // \u000d
        System.out.println("comment executed");
    }
}

ٹاسک 3: ایک نامزد لوپ بنائیں

یہاں سیریز کا ایک اور رکن ہے جس کا عنوان ہے "کروی گایوں کے لئے عملی جاوا پروگرامنگ کے مسائل"۔ اس معنی میں کہ یہ واضح نہیں ہے کہ یہ کیوں ضروری ہے: یہ امکان نہیں ہے کہ لوپ اس حقیقت سے ناراض ہو جائے گا کہ اسے کوئی نام نہیں دیا گیا ہے۔ بہرحال، یہ ایک اور وجہ سے اہم ہے: زبان آپ کو ایک لوپ کا نام دینے دیتی ہے۔

حل

نوٹ: یہ "نام" کچھ لوگوں کو "لیبل" کے نام سے جانا جاتا ہے، اور عملی طور پر ان کا استعمال کرنے کی سفارش نہیں کی جاتی ہے۔ ایک نامزد لوپ کو ظاہر کرنے کے لیے جاوا کوڈ
public class NamedLoop {
    public static void main(String[] args) {
        loop1:
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                if (i == 3)
                    break loop1;
                System.out.println("i = " + i + " j = " + j);
            }
        }
    }
}
اگر آپ پروگرام چلاتے ہیں تو آؤٹ پٹ کیا ہوگا:
i = 0 j = 0
i = 0 j = 1
i = 0 j = 2
i = 0 j = 3
i = 0 j = 4
i = 1 j = 0
i = 1 j = 1
i = 1 j = 2
i = 1 j = 3
i = 1 j = 4
i = 2 j = 0
i = 2 j = 1
i = 2 j = 2
i = 2 j = 3
i = 2 j = 4
آپ نامزد لوپ کے شروع میں واپس جانے کے لیے جاری رکھیں کلیدی لفظ بھی استعمال کر سکتے ہیں۔ اور اگر ضروری ہو تو، آپ لوپ کے ساتھ نیسٹڈ میں break(یا ) استعمال کر سکتے ہیں تاکہ ایک کا استعمال کرتے ہوئے کئی لوپس کو توڑ سکیں ۔ یہ جھنڈوں کی ایک بڑی تعداد کو بنانے اور بیان میں ان کی جانچ پڑتال سے بچنے میں مدد کرے گا تاکہ یہ تعین کیا جا سکے کہ اندرونی لوپ کو جاری رکھنا ہے یا باہر نکلنا ہے۔ continueif-elseforif-elseif-else

ٹاسک 4: عدد کی ایک صف میں ایک ہی ڈپلیکیٹ تلاش کریں۔

آپ کو ایک عددی صف (یا ایک ArrayList، اگر آپ چاہیں) دی جاتی ہے جس میں Integer1 سے 100 تک ہر ایک پر مشتمل ہوتا ہے۔ صف میں ایک، اور صرف ایک، ڈپلیکیٹ عنصر ہوتا ہے۔ آپ اسے کیسے تلاش کرتے ہیں؟ جاوا پروگرامر کے لیے پچھلے تین کے مقابلے میں اس قسم کا کام حاصل کرنا زیادہ عام ہے۔ کیونکہ یہ زبان کی شاذ و نادر ہی استعمال ہونے والی باریکیوں کے بارے میں آپ کے علم کے بجائے منطق کے بارے میں ہے۔ وحشیانہ طاقت کا استعمال کرنے کا آپ کا پہلا بے لگام جذبہ اس وقت بہت تیزی سے گزر جائے گا جب آپ کے دماغ میں کک لگتی ہے یا آپ کو احساس ہوتا ہے کہ "میں ایک پروگرامر ہوں۔ میں ہوشیار ہوں۔" مسئلہ صرف یہ ہے کہ انٹرویو کے دوران، جب آپ تناؤ میں ہوتے ہیں، تو ایسا نہیں ہو سکتا۔ تو حل کو دیکھنے سے پہلے اب سوچیں!

یہ الگورتھم ہے۔

1 سے 100 تک کے تمام نمبروں کا حساب لگائیں۔ ہمارے خیال میں آپ جانتے ہیں کہ آپ یہ کیسے کر سکتے ہیں (مثال کے طور پر، گاس کا مشہور طریقہ استعمال کرتے ہوئے)۔ اب اپنی صف میں موجود عناصر کے مجموعے کا حساب لگائیں یا ArrayList. اور... پہلی رقم کو دوسرے سے گھٹائیں۔ بنگو! نتیجہ نمبر ڈپلیکیٹ عنصر کی قدر ہے۔ اس کام کے لیے جاوا کوڈ کا استعمال کرتے ہوئے ArrayList.
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class FindDuplicate {
    private static void findDuplicate(List<Integer> elements) {

        int distinctSum = elements.stream().distinct().mapToInt(e -> e).sum();
// Find the sum of all list elements
        int totalSum = elements.stream().mapToInt(e -> e).sum();
        System.out.println("The repeated element is: " + (totalSum - distinctSum));
    }

    public static void main(String[] args) {
// Create a list of sequential elements in the interval [1..101).
        List <Integer> elements = IntStream.range(1, 101).boxed().collect(Collectors.toList());
// Add the value 23 at index 53
        elements.set(53, 23);
        findDuplicate(elements);
    }
}

ایک اور حل

import java.util.List;
import java.util.ArrayList;

public class Duplicate {

    public int findDuplicateNumber(List<Integer> numbers) {

        int highestNumber = numbers.size() - 1;
        int total = getSum(numbers);
        int duplicate = total - (highestNumber * (highestNumber + 1) / 2);
        return duplicate;
    }

    public int getSum(List<Integer> numbers) {

        int sum = 0;
        for (int num : numbers) {
            sum = sum + num;
        }
        return sum;
    }

    public static void main(String a[]) {
        List <Integer> numbers = new ArrayList <Integer>();
        for (int i = 1; i < 100; i++) {
            numbers.add(i);
        }
        // Add a duplicate to the list
        numbers.add(25);
        Duplicate dn = new Duplicate();
        System.out.println("The repeated element is: " + dn.findDuplicateNumber(numbers));
    }
}

ٹاسک 5: عدد کی ایک صف میں ایک غیر منفرد ڈپلیکیٹ تلاش کریں۔

اگر پچھلا کام آپ کے لیے بہت آسان تھا، تو یہ کرنے کی کوشش کریں: آپ کو 1 سے 100 تک کے عدد کی فہرست دی گئی ہے۔ اس میں ڈپلیکیٹس ہیں (ایک سے زیادہ)۔ آپ ان عناصر کو کیسے تلاش کرتے ہیں جو ایک سے زیادہ بار پائے جاتے ہیں (عناصر تلاش کریں اور اس بات کی نشاندہی کریں کہ وہ کتنی بار واقع ہوتے ہیں)؟

حل

یہاں منطقی حل یہ ہوگا کہ ہیش میپ جیسی کوئی چیز استعمال کی جائے، کیونکہ یہ ڈیٹا کو کلیدی قدر کے جوڑوں میں اسٹور کرتا ہے۔ جاوا میں اس کام کے لیے کوڈ:
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class SomeDuplicates {
    private static void findDuplicates(List<Integer> elements) {
        HashMap <Integer, Integer> duplicates = new HashMap <>();
// Use the following rule to populate the Map duplicates:
// the key is the element value, and the value is the number of times it occurs
        elements.forEach(e -> duplicates.put(e, duplicates.get(e) == null ? 1 : duplicates.get(e) + 1));
// Remove any elements that don't occur more than once from the Map duplicates
// and store the result as a list (to make it easy to work with in the next step)
        List <Map.Entry <Integer, Integer> >
        result = duplicates.entrySet().stream().filter(d -> d.getValue() > 1).collect(Collectors.toList());
// Write the results for all elements to the result list
        result.forEach(e -> System.out.println(String.format("Element %d  occurs %d times", e.getKey(), e.getValue())));
    }

    public static void main(String[] args) {
        List <Integer> elements = IntStream.range(1, 101).boxed().collect(Collectors.toList());
        elements.set(97, 23);
        elements.set(27, 51);
        elements.set(99, 23);
        findDuplicates(elements);
    }
}

نتیجہ

جاوا کے بہت سے مختلف قسم کے عملی کام ہیں، اور آپ نہیں جانتے کہ انٹرویو لینے والا آپ سے کس قسم کی پہیلیاں حل کرنے کے لیے کہے گا۔ لیکن، کوئی بھی سمجھدار آجر یہ سمجھتا ہے کہ حقیقی عملی کاموں کو مکمل کرنے کی آپ کی قابلیت ، جیسے کہ آپ کو کام پر سامنا کرنا پڑے گا، چال کے سوالات کو حل کرنے کی آپ کی صلاحیت سے کہیں زیادہ اہم ہے۔ اس لیے جتنا ممکن ہو ان کو کریں۔ اسی لیے ہم نے CodeGym بنایا۔ اس مضمون کو بنانے کے لیے geeksforgeeks سے مواد استعمال کیا گیا تھا۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION