CodeGym /جاوا بلاگ /Random-SD /جاوا ڪم هڪ موڙ سان: هيلو، انٽرويو!
John Squirrels
سطح
San Francisco

جاوا ڪم هڪ موڙ سان: هيلو، انٽرويو!

گروپ ۾ شايع ٿيل
CodeGym شاگردن جا بهترين دوست آهن پروگرامنگ ٽاسڪ، جاوا، ۽ ٽاسڪ جي تصديق ڪندڙ. اڃان تائين، اتي هڪ وقت اچي ٿو جڏهن هر پاداوان ڊولپر کي هٽائڻ واري رستي کان هلڻ شروع ڪرڻ گهرجي، پنهنجي پنهنجي ميني پروجيڪٽ کي ايجاد ڪرڻ، ۽ پاڻ کي انٽرويو لاء تيار ڪرڻ گهرجي. هڪ اهو سوچيندو ته انٽرويو ۾ ساڳيو ئي عملي جاوا ڪم هوندا جيڪي هن ڪورس ۾ مليا آهن. ۽ ائين ئي اڪثر ڪيسن ۾ آهي، پر ڪجهه ڪمپنيون چال سوال پڇڻ پسند ڪن ٿيون يا ڪجهه اڻ واقف آهن. دٻاءُ واري انٽرويو دوران پريشان ٿيڻ کان بچڻ لاءِ، اهو مددگار آهي ته جاوا جا ساڳيا ڪم پاڻ گهر ۾ حل ڪرڻ جي ڪوشش ڪريو.
جاوا ڪم هڪ موڙ سان: هيلو، انٽرويو!  - 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
        }
    }
}
ڇا ٿيندو؟ اسان شروعات سان شروع ڪندا آهيون = 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: نالي وارو لوپ ٺاهيو

هتي سيريز جو هڪ ٻيو ميمبر آهي جنهن جو عنوان آهي "Practical Java Programming Problems for Spherical Cows". ان لحاظ کان ته اهو واضح ناهي ته اهو ڇو ضروري آهي: اهو ممڪن ناهي ته لوپ ان حقيقت کان ناراض ٿي ويندو ته ان کي نالو نه ڏنو ويو آهي. بهرحال، اهو هڪ ٻئي سبب لاء اهم آهي: ٻولي توهان کي لوپ جو نالو ڏيڻ جي اجازت ڏئي ٿي.

حل

نوٽ: اهي "نالا" ڪجهه ماڻهن کي "ليبل" طور سڃاتل آهن، ۽ انهن کي عملي طور استعمال ڪرڻ جي سفارش نه ڪئي وئي آهي. نالي واري لوپ جي نمائش لاءِ جاوا ڪوڊ
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(يا ) هڪ لوپ سان continuenested ۾ ڪيترن ئي لوپ کي ٽوڙڻ لاءِ . هي مدد ڪندي وڏي تعداد ۾ جھنڊو ٺاهڻ کان بچڻ ۽ انهن کي هڪ بيان ۾ چيڪ ڪرڻ لاءِ اهو طئي ڪرڻ لاءِ ته ڇا جاري رکڻ يا اندرين لوپ مان نڪرڻ. if-elseforif-elseif-else

ٽاسڪ 4: انٽيجرز جي صف ۾ ھڪڙي ھڪڙي نقل ڳولھيو

توھان کي ھڪ انٽيجر ايري (يا ھڪڙو ArrayList، جيڪڏھن توھان چاھيو ٿا) ڏنو ويو آھي جنھن ۾ ھر ھڪ Integerکان وٺي 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 تائين عددن جي فهرست ڏني وئي آهي. ان ۾ نقل آهن (هڪ کان وڌيڪ). توهان عناصر ڪيئن ڳوليندا آهيو جيڪي هڪ کان وڌيڪ ڀيرا ٿين ٿا (عناصر ڳوليو ۽ ظاهر ڪريو ته اهي ڪيترا ڀيرا ٿين ٿا)؟

حل

هتي منطقي حل هوندو ته ڪا شيءِ استعمال ڪرڻ جهڙو HashMap، ڇاڪاڻ ته اهو ڊيٽا کي اهم-قدر جوڑوں ۾ محفوظ ڪري ٿو. جاوا ۾ ھن ڪم لاءِ ڪوڊ:
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);
    }
}

نتيجو

اتي ڪيترائي قسم جا عملي جاوا ڪم آھن، ۽ توھان کي خبر ناھي ته انٽرويو وٺندڙ توھان کي ڪھڙي قسم جا پزل حل ڪرڻ لاءِ چوندو. پر، ڪو به سمجھدار آجر سمجھي ٿو ته توھان جي حقيقي عملي ڪمن کي مڪمل ڪرڻ جي صلاحيت ، جھڙوڪ اھي جيڪي توھان کي نوڪري تي ملندا، توھان جي چال سوالن کي حل ڪرڻ جي صلاحيت کان وڌيڪ اھم آھي. تنهن ڪري انهن کي جيترو ٿي سگهي ڪريو. انهي ڪري اسان ڪوڊ گيم ٺاهيو. geeksforgeeks مان مواد استعمال ڪيو ويو ھي مضمون ٺاھيو.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION