JavaRush /جاوا بلاگ /Random-SD /جاوا اسٽرنگ. انٽرويو سوال ۽ جواب، حصو 1
Andrey
سطح

جاوا اسٽرنگ. انٽرويو سوال ۽ جواب، حصو 1

گروپ ۾ شايع ٿيل
ڪلاس Stringجاوا ۾ سڀ کان وڌيڪ استعمال ٿيندڙ طبقن مان هڪ آهي. هي آرٽيڪل مهيا ڪري ٿو ڪجهه اهم جاوا اسٽرنگ انٽرويو سوال ۽ جواب. جاوا اسٽرنگ.  انٽرويو سوال ۽ جواب، حصو 1 - 1اهي ڪلاس جي مڪمل تصوير حاصل ڪرڻ ۾ تمام مددگار ثابت ٿيندا String۽ توهان کي ڪنهن به ڪلاس سان لاڳاپيل انٽرويو سوالن لاءِ تيار ڪندا String.

1. جاوا ۾ String ڇا آھي؟ هي ڪهڙي قسم جي ڊيٽا آهي؟

اسٽرنگ جاوا ۾ ھڪڙو ڪلاس آھي جيڪو java.lang پيڪيج ۾ بيان ڪيو ويو آھي. اهو هڪ ابتدائي ڊيٽا جو قسم نه آهي جهڙوڪ int ۽ ڊگهو. اسٽرنگ ڪلاس هڪ اسٽرنگ ڪردار سيٽ جي نمائندگي ڪري ٿو. Strings تقريبن سڀني جاوا ايپليڪيشنن ۾ استعمال ڪيا ويا آهن ۽ ڪجھ حقيقتون آھن جيڪي اسان کي اسٽرنگ ڪلاس بابت ڄاڻڻ گھرجي. اهو immutableجاوا ۾ هڪ ناقابل تبديلي ( ) ۽ حتمي ڊيٽا جو قسم آهي ۽ Stringورچوئل مشين ڪلاس جي سڀني شين کي اسٽرنگ پول ۾ محفوظ ڪري ٿو. ٻي خصوصيت ڊبل اقتباس استعمال ڪندي Stringطبقاتي شيون حاصل ڪرڻ جو طريقو آهي String۽ "+" آپريٽر کي ڪنٽينشن لاءِ اوور لوڊ ڪندي.

2. String اعتراض ٺاهڻ جا مختلف طريقا ڪهڙا آهن؟

اسان نئين آپريٽر کي استعمال ڪندي شيون ٺاهي سگهون ٿا جهڙوڪ جاوا ۾ ڪنهن ٻئي ڪلاس وانگر يا اسان هڪ اعتراض ٺاهڻ لاء ڊبل ڪوٽس استعمال ڪري سگهون ٿا String. اتي پڻ ڪيترائي ڪلاس ٺاھيندڙ آھن Stringھڪڙي اسٽرنگ حاصل ڪرڻ لاءِ ڪردار جي صف، ھڪڙي بائيٽ صف، ۽ پڻ استعمال ڪندي StringBufferيا StringBuilder.
String str = new String("abc");
String str1 = "abc";
جڏهن اسان ڊبل اقتباس استعمال ڪندي هڪ اسٽرنگ ٺاهيندا آهيون، جاوا ورچوئل مشين اسٽرنگ پول ۾ ساڳئي قدر سان ٻي اسٽرنگ لاءِ ڏسندي آهي. جيڪڏهن اسٽرنگ ملي ٿي، ته پوء صرف ڪلاس جي هڪ موجوده اعتراض جو حوالو ڏنو ويو آهي String، ٻي صورت ۾ هڪ نئين اعتراض حاصل ڪيل قيمت سان ٺاهي وئي آهي ۽ پول ۾ ذخيرو ٿيل آهي. جڏهن اسان نئون آپريٽر استعمال ڪريون ٿا، ورچوئل مشين هڪ اعتراض ٺاهي ٿي Stringپر ان کي اسٽرنگ پول ۾ ذخيرو نٿو ڪري. اسان اهو طريقو استعمال ڪري سگهون ٿا intern()هڪ تار کي اسٽرنگ پول ۾ ذخيرو ڪرڻ لاءِ، يا هڪ حوالو حاصل ڪري سگهون ٿا جيڪڏهن اهڙي تار اڳ ۾ ئي پول ۾ آهي.

3. هڪ طريقو لکو ته چيڪ ڪرڻ لاء ته ڇا هڪ تار هڪ palindrome آهي.

هڪ تار کي palindrome سڏيو ويندو آهي جيڪڏهن اهو ٻنهي طرفن ۾ ساڳيو پڙهي ٿو. مثال طور، "aba" هڪ palindromic تار آهي. ڪلاس Stringڪنهن به اسٽرنگ کي ريورس ڪرڻ جو ڪو طريقو مهيا نه ڪندو آهي، پر ڪلاسن وٽ هڪ ريورسنگ طريقو StringBufferهوندو آهي StringBuilderجنهن سان اسين چيڪ ڪري سگهون ٿا ته ڇا اسان جي اسٽرنگ پيلنڊروم آهي يا نه.
private static boolean isPalindrome(String str) {
        if (str == null)
            return false;
        StringBuilder strBuilder = new StringBuilder(str);
        strBuilder.reverse();
        return strBuilder.toString().equals(str);
    }
ڪڏهن ڪڏهن انٽرويو وٺندڙ شايد پڇي سگهي ٿو ته هن چيڪ لاءِ ٻيون ڪلاسون استعمال نه ڪن، ان صورت ۾ اسان ٻنهي پاسن جي تارن جي اکرن جو مقابلو ڪري سگهون ٿا ته جيئن palindrome چيڪ ڪجي.
private static boolean isPalindromeString(String str) {
        if (str == null)
            return false;
        int length = str.length();
        System.out.println(length / 2);
        for (int i = 0; i < length / 2; i++) {

            if (str.charAt(i) != str.charAt(length - i - 1))
                return false;
        }
        return true;
    }

4. ڏنل اکرن کي اسٽرنگ مان ڪڍڻ جو طريقو لکو.

اسان ھڪڙو طريقو استعمال ڪري سگھون ٿا replaceAllھڪڙي تار جي سڀني واقعن کي ٻئي تار سان تبديل ڪرڻ لاء. ياد رکو ته طريقو هڪ اسٽرنگ کي هڪ دليل طور وٺندو آهي، تنهنڪري اسان ڪلاس کي استعمال ڪريون ٿا Characterهڪ اسٽرنگ ٺاهڻ لاءِ ڪردار مان، ۽ ان کي استعمال ڪريون ٿا سڀني اکرن کي خالي اسٽرنگ سان مٽائڻ لاءِ.
private static String removeChar(String str, char ch) {
        if (str == null)
            return null;
        return str.replaceAll(Character.toString(ch), "");
    }

5. اسان هڪ تار کي اپر ڪيس يا لوئر ڪيس ۾ ڪيئن بدلائي سگهون ٿا؟

اسان ڪلاس جا طريقا استعمال ڪري سگھون ٿا ٻئي اپر ڪيز ۽ لوئر ڪيز اسٽرنگ حاصل ڪرڻ String toUpperCaseلاءِ . toLowerCaceانهن طريقن ۾ هڪ اوور لوڊ آهي جيڪو هڪ دليل وٺندو آهي Locale۽ اسٽرنگ کي اپر يا لوئر ڪيس ۾ تبديل ڪرڻ لاءِ ان جي لوڪلائيزيشن ضابطن کي استعمال ڪندو آهي.

6. تسلسل جو طريقو ڇا ڪندو؟

جاوا 1.4 انٽرفيس متعارف ڪرايو CharSequence، هڪ ڪلاس Stringهن انٽرفيس کي ورثي ۾ ملي ٿو ۽ اهو ئي سبب آهي ته subSequenceڪلاس ۾ هڪ طريقو لاڳو ڪرڻ جو String. اندروني طور تي ان کي سڏي ٿو substring. طريقو استعمال ڪرڻ جو هڪ سادي مثال:
public class StringSubsequence {

    public static void main(String[] args) {
        String str = "www.journaldev.com";
        System.out.println("Last 4 char String: "+str.subSequence(str.length()-4, str.length()));
        System.out.println("First 4 char String: "+str.subSequence(0, 4));
        System.out.println("website name: "+str.subSequence(4, 14));

        //substring vs subSequence
        System.out.println("substring == subSequence ? "
			+(str.substring(4, 14) == str.subSequence(4, 14)));

        System.out.println("substring equals subSequence ? "
			+(str.substring(4, 14).equals(str.subSequence(4, 14))));
    }
}
پروگرام جي پيداوار هيٺ ڏنل ڏيکاري ويندي:
Last 4 char String: .com
First 4 char String: www.
website name: journaldev
substring == subSequence ? false
substring equals subSequence ? true
مثالي طور توهان کي هميشه استعمال ڪرڻ گهرجي substring.

7. جاوا ۾ ٻن تارن جو مقابلو ڪيئن ڪجي؟

ڪلاس Stringانٽرفيس کي ورثي ۾ ملي ٿو Comparable۽ ٻه طريقا اختيار ڪيا آهن compareTo(). طريقي سان compareTo(String anotherString)اعتراض کي Stringحاصل ڪيل دليلن سان Stringليڪسيگرافي طور تي موازنہ ڪري ٿو. جيڪڏهن موجوده لڪير موصول ٿيل اسٽرنگ کان اڳ آهي، طريقو هڪ منفي عدد واپس ڪري ٿو، ۽ جيڪڏهن اسٽرنگ حاصل ڪيل دليلن جي پيروي ڪري، اهو هڪ مثبت عدد واپس ڪري ٿو integer. جيڪڏهن طريقو واپس اچي ٿو 0، ته پوءِ اسٽرنگ جو قدر ساڳيو آهي، ان صورت ۾ طريقو equals(String str)به صحيح موٽندو. compareToIgnoreCase(String str): هي طريقو اڳئين سان ملندڙ جلندڙ آهي سواءِ ان جي ته اهو ڪيس نظر انداز ڪري ٿو. اهو استعمال ڪري ٿو CASE_INSENSITIVE_ORDER Comparator for case-insensitive comparison. جيڪڏهن واپسي جي قيمت صفر آهي، پوء اهو طريقو equalsIgnoreCase(String str)به صحيح ٿيندو. اچو ته انهن طريقن جي وضاحت ڪرڻ لاء هڪ ننڍڙو مثال ڏسو:
public class StringCompareToExample {
    public static void main(String[] args) {
        String str = "ABC";
        System.out.println(str.compareTo("DEF"));
        System.out.println(str.compareToIgnoreCase("abc"));
    }
}
پروگرام ھيٺ ڏنل ٻاھر ڪڍندو:
-3
0

8. هڪ اسٽرنگ کي ڪردار ۾ ڪيئن بدلجي ۽ ان جي برعڪس؟

هي هڪ چال سوال آهي ڇاڪاڻ ته هڪ اسٽرنگ اکرن جو هڪ سلسلو آهي، تنهنڪري اسان ان کي صرف هڪ واحد ڪردار ۾ تبديل ڪري سگهون ٿا. اسان هڪ طريقو استعمال ڪري سگھون ٿا charAtڪردار کي حاصل ڪرڻ لاءِ مخصوص پوزيشن تي يا اسان هڪ طريقو استعمال ڪري سگهون ٿا toCharArray()هڪ اسٽرنگ کي ڪردارن جي صف ۾ تبديل ڪرڻ لاءِ. ھڪڙو سادو مثال ڏيکاري ٿو ته ڪيئن اسٽرنگ کي ڪردار ۾ ۽ ڪردار کي اسٽرنگ ۾ جاوا ۾.
import java.util.Arrays;

public class StringToCharToString {
    public static void main(String[] args) {
        //String to char array
        String str = "123";
        char[] chArr = str.toCharArray();
        System.out.println("String to char array: "+Arrays.toString(chArr));
        //String to char
        char c = str.charAt(1);
        System.out.println("String to char: "+c);
        //char to String
        String s = Character.toString(c);
        System.out.println("char to String: "+s);
        //удалить все заданные символы из строки
        System.out.println("removing all chars from String: "
                                 +removeCharFromString("1ABCD12DW", '1'));
    }

    private static String removeCharFromString(String str, char c) {
        return str.replaceAll(Character.toString( c ), "");
    }
}
پروگرام ھيٺ ڏنل ٻاھر ڪڍندو:
String to char array: [1, 2, 3]
String to char: 2
char to String: 2
removing all chars from String: ABCD2DW

9. هڪ اسٽرنگ کي بائيٽ ايري ۾ ڪيئن بدلجي ۽ ان جي برعڪس؟

اسان هڪ طريقو استعمال ڪري سگهون ٿا getBytes()هڪ اسٽرنگ کي بائيٽ سري ۾ تبديل ڪرڻ لاءِ ۽ اسان new String(byte[] arr)هڪ بائيٽ سري کي اسٽرنگ ۾ تبديل ڪرڻ لاءِ تعمير ڪندڙ استعمال ڪري سگهون ٿا.
import java.util.Arrays;

public class StringByteArray {
     public static void main(String[] args) {
        String str = "www.journaldev.com";
        //преобразование String в byte array
        byte[] byteArr = str.getBytes();
        System.out.println("String to byte array : "+Arrays.toString(byteArr));
        //преобразование byte array и String
        String str1 = new String(byteArr);
        System.out.println("byte array to String : "+str1);
        //посмотрим, str и str1 одинаковые or нет
        System.out.println("str == str1? " + (str == str1));
        System.out.println("str.equals(str1)? " + (str.equals(str1)));
    }
}
پروگرام ھيٺ ڏنل ٻاھر ڪڍندو:
String to byte array : [119, 119, 119, 46, 106, 111, 117, 114, 110, 97, 108, 100, 101, 118, 46, 99, 111, 109]
byte array to String : www.journaldev.com
str == str1? false
str.equals(str1)? true

10. ڇا اسان سوئچ جي تعمير ۾ اسٽرنگ استعمال ڪري سگھون ٿا؟

هي مشڪل سوال ٻوليءَ جي موجوده ترقيءَ بابت توهان جي ڄاڻ کي جانچڻ لاءِ استعمال ڪيو ويندو آهي. جاوا 7 اسٽرنگ استعمال ڪرڻ لاء سوئچ بيان کي وڌايو ؛ جاوا جا اڳوڻو نسخو هن کي سپورٽ نٿا ڪن. جيڪڏهن توهان تارن لاءِ مشروط وهڪري تي عمل ڪري رهيا آهيو، توهان استعمال ڪري سگهو ٿا if-else حالتون ۽ جيڪڏهن توهان Java 7 يا بعد ۾ استعمال ڪري رهيا آهيو ته توهان هڪ سوئچ بيان استعمال ڪري سگهو ٿا. بيان ۾ اسٽرنگ استعمال ڪرڻ جو ھڪڙو ننڍڙو مثال switch۽ ٻيو طريقو جيڪو ڏيکاري ٿو ساڳيو منطق استعمال ڪندي حالتن if-else.
public class SwitchStringExample {

    public static void main(String[] args) {
        printColorUsingSwitch("red");
        printColorUsingIf("red");
        // оператор switch регистрозависимый
        printColorUsingSwitch("RED");
        printColorUsingSwitch(null);
    }

    private static void printColorUsingIf(String color) {
        if (color.equals("blue")) {
            System.out.println("BLUE");
        } else if (color.equals("red")) {
            System.out.println("RED");
        } else {
            System.out.println("INVALID COLOR CODE");
        }
    }

    private static void printColorUsingSwitch(String color) {
        switch (color) {
        case "blue":
            System.out.println("BLUE");
            break;
        case "red":
            System.out.println("RED");
            break;
        default:
            System.out.println("INVALID COLOR CODE");
        }
    }
}
پروگرام ھيٺ ڏنل ٻاھر ڪڍندو:
RED
RED
INVALID COLOR CODE
Exception in thread "main"
java.lang.NullPointerException
    at com.journaldev.util.SwitchStringExample.printColorUsingSwitch(SwitchStringExample.java:24)
    at com.journaldev.util.SwitchStringExample.main(SwitchStringExample.java:10)
switchجاوا ۾ تارن لاءِ اهم استعمال جا نقطا .
  • ڊزائن ۾ تارن جو استعمال switchڪيترن ئي زنجيرن کي ختم ڪندي ڪوڊ کي وڌيڪ پڙهڻ لائق بڻائي ٿو if-else.
  • strings in switchcase sensitive آهن، مٿي ڏنل مثال هن کي ڏيکاري ٿو.
  • آپريٽر switchهڪ طريقو استعمال ڪري ٿو String.equals()نتيجي جي قيمت کي ڪيس جي قيمتن سان موازنہ ڪرڻ لاءِ ، ان ڪري هڪ چيڪ شامل ڪريو NULL کان بچڻ لاءِ NullPointerException.
  • جاوا 7 دستاويزن جي مطابق اسٽرنگ لاءِ switch، جاوا ڪمپلر ٺاهي ٿو وڌيڪ ڪارائتو بائيٽڪوڊ اسٽرنگز لاءِ switchڪنڪٽيٽيڊ حالتن جي ڀيٽ ۾ if-else.
  • پڪ ڪريو ته اهو استعمال ڪيو ويندو Java 7 يا بعد ۾، ٻي صورت ۾ توهان حاصل ڪندا xception.

11. ھڪڙو پروگرام لکو جيڪو ھڪڙي تار جي سڀني اجازتن کي پرنٽ ڪري.

هي هڪ مشڪل سوال آهي ۽ اسان کي اسٽرنگ جي سڀني اجازتن کي ڳولڻ لاءِ ريڪرشن استعمال ڪرڻو پوندو، مثال طور ”AAB“ جي اجازت ”AAB“، ”ABA“ ۽ ”BAA“ ٿي سگهي ٿي. اسان کي پڻ سيٽ استعمال ڪرڻ جي ضرورت آهي انهي کي يقيني بڻائڻ لاءِ ته اسان وٽ نقل ٿيل قطارون نه آهن. سڀني اجازتن کي حاصل ڪرڻ لاء، اسان پهريون ڀيرو اسٽرنگ جو پهريون ڪردار وٺون ٿا ۽ باقي ڪردارن کي ٻيهر ترتيب ڏيو. جيڪڏهن اسٽرنگ = "ABC" پهريون ڪردار چار = A ۽ باقي اجازتون BC ۽ CB. ھاڻي اسان اجازتن ۾ موجود پوزيشن ۾ پھريون ڪردار داخل ڪري سگھون ٿا. BC -> ABC, BAC, BCA CB -> ACB, CAB, CBA مثال پروگرام:
import java.util.HashSet;
import java.util.Set;

public class StringHelper {
    public static Set<String> permutationFinder(String str) {
        Set<String> perm = new HashSet<String>();
        //Handling error scenarios
        if (str == null) {
            return null;
        } else if (str.length() == 0) {
            perm.add("");
            return perm;
        }
        char initial = str.charAt(0); // первый символ
        String rem = str.substring(1); // полная строка без первого символа
        Set<String> words = permutationFinder(rem);
        for (String strNew : words) {
            for (int i = 0;i<=strNew.length();i++){
                perm.add(charInsert(strNew, initial, i));
            }
        }
        return perm;
    }

    public static String charInsert(String str, char c, int j) {
        String begin = str.substring(0, j);
        String end = str.substring(j);
        return begin + c + end;
    }

    public static void main(String[] args) {
        String s = "AAC";
        String s1 = "ABC";
        String s2 = "ABCD";
        System.out.println("\nPermutations for " + s + " are: \n" + permutationFinder(s));
        System.out.println("\nPermutations for " + s1 + " are: \n" + permutationFinder(s1));
        System.out.println("\nPermutations for " + s2 + " are: \n" + permutationFinder(s2));
    }
}
پروگرام جي پيداوار:
Permutations for AAC are:
[AAC, ACA, CAA]

Permutations for ABC are:
[ACB, ABC, BCA, CBA, CAB, BAC]

Permutations for ABCD are:
[DABC, CADB, BCAD, DBAC, BACD, ABCD, ABDC, DCBA, ADBC, ADCB, CBDA, CBAD, DACB, ACBD, CDBA, CDAB, DCAB, ACDB, DBCA, BDAC, CABD, BADC, BCDA, BDCA]
مضمون جو تسلسل
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION