{"id":2663,"date":"2021-04-07T10:40:58","date_gmt":"2021-04-07T10:40:58","guid":{"rendered":"https:\/\/www.prepbytes.com\/blog\/?p=2663"},"modified":"2022-03-10T17:49:41","modified_gmt":"2022-03-10T17:49:41","slug":"top-30-java-programming-interview-questions","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/","title":{"rendered":"Top 30 Java Programming interview questions"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1646202336103-B_365-java.png\" alt=\"\" \/><\/p>\n<ol>\n<li><strong>Check if a given number is palindrome or not.<\/strong><br \/>\nAns. A palindrome is a number which is when reversed give the same number. We find the reverse and check whether it is equal to the given number or not.<\/p>\n<pre><code>public static void main(String[] args) {\n    Scanner in = new Scanner(System.in);\n    String str = in.nextLine();\n    int length = str.length();         \n    boolean isPalindrome = true;          \n    for(int i = 0; i &lt; length; i++)\n    {\n        if(str.charAt(i) != str.charAt(length-1-i)) {\n            System.out.println(&quot;Snot a palindrome.&quot;);\n            isPalindrome = false;\n            break;\n        }\n    }          \n    if(isPalindrome) {\n        System.out.println(&quot;palindrome.&quot;);\n    }\n}<\/code><\/pre>\n<\/li>\n<li><strong>Count the occurrence of a given character in string.<\/strong><br \/>\nAns.<\/p>\n<pre><code>public static void main(String args[]){\nString str = &quot;this is a string&quot;;\nchar ch = &#039;s&#039;;\nint count = 0;\nfor(char c:strArr){\n  if(c == &#039;s&#039;){\n    count++;\n  }\n}\n  System.out.println(count);    \n}<\/code><\/pre>\n<\/li>\n<li><strong>Find the GCD of two numbers in logn time.<\/strong><br \/>\nAns.<\/p>\n<pre><code>public static int gcd(int a, int b) {\nwhile (((a &gt; 0) &amp;&amp; (b &gt; 0))) {\n  if ((a &gt; b)) {\n    a = (a % b);\n  } else {\n    b = (b % a);\n  }\n}\nif ((a == 0)) {\n  return b;\n} else {\n  return a;\n}\n}  \npublic static void main(String[] args) {\nint a = new Scanner(System.in);\nint b = new Scanner(System.in);\nSystem.out.println(GCD.gcd(a, b));\n}<\/code><\/pre>\n<\/li>\n<li><strong>Can you code the Binary Search Algorithm in Java?<\/strong><br \/>\nAns.<\/p>\n<pre><code>public int binarySearch(int a[], int num)\n{\n    if(num&gt;a[a.length-1]||num&lt;a[0])return -1;\n    int start=0;\n    int end =a.length-1;\n    int mid=(start+end)\/2;\n    while(a[mid]!=num){\n        if(num&lt;mid){\n            end=mid;\n        }else{\n            start=mid;\n        }\n        mid = (start+end)\/2;\n    }\n    return mid;\n}<\/code><\/pre>\n<\/li>\n<li><strong>Implement the merge Sort algorithm.<\/strong><br \/>\nAns. This is a Divide and conquer algorithm.<\/p>\n<pre><code>\npublic static void main(String[] args) {\n    int[] list = {4,5,2,1,3};\n    mergeSort(list, 0, list.length - 1);\n}\npublic static void mergeSort(int[] a, int first, int last)\n  {\n    if(last - first == 0) \n    {\n    }\n    else if (last - first == 1) \n    {\n        if(a[first] &gt; a[last])\n        {\n            int temp = a[first];\n            a[first] = a[last];\n            a[last] = temp;\n        }\n    }\n    else    \n    {\n        int mid = (first + last) \/ 2;\n        mergeSort(a, first, mid);\n        mergeSort(a, mid + 1, last);\n        merge(a, first, mid, last);\n    }\n  }\nprivate static void merge(int[] a, int first, int mid, int last)\n  {\n    int[] temp = new int[last - first + 1];\n    int i = first; int j = mid + 1;\n    for(int k = first; k &lt;= last; k++)\n    {\n        if(i &gt; mid || j &gt; last)\n        {\n            if(i &gt; mid &amp;&amp; j &lt;= last)\n            {\n                System.out.println(&quot;a[j]: &quot; + a[j]);\n                temp[k - first] = a[j];\n                j++;\n            }\n            else if(i &lt;= mid &amp;&amp; j &gt; last)\n            {\n                System.out.println(&quot;a[i]: &quot; + a[i]);\n                temp[k - first] = a[i];\n                i++;\n            }\n            else\n            {\n                break;\n            }\n        }\n        else\n        {\n            if(a[i] &lt; a[j])\n            {\n                temp[k - first] = a[i];\n                i++;\n            }\n            else\n            {\n                temp[k - first] = a[j];\n                j++;\n            }\n        }\n    }\n    for(int count = 0; count &lt; temp.length; count++)\n    {\n        a[first + count] = temp[count];\n    }\n  }<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Implement a quicksort algorithm.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public int partition(ArrayList list, int start, int end)  {\ndouble pivot = list.get(end);\nint i = (start - 1); \nfor (int j = start; j &lt; end; j++) {\nif (list.get(j) &lt;= pivot) {  \n    i++;\n    double temp = list.get(i);\n    list.set(i, list.get(j));\n    list.set(j, temp);\n    }\n} double temp = list.get(i + 1); \n  list.set((i + 1), list.get(end));\n  list.set(end, temp);\n  return i + 1;\n}\npublic ArrayList sort(ArrayList list, int start, int end) { \nif (start &lt; end) {\nint pi = partition(list, start, end); \nsort(list, start, pi - 1); \nsort(list, pi + 1, end);\n    }  return list;\n} \npublic ArrayList Solve(double[] nums, int a, int b, int c) {\nArrayList newList = new ArrayList();\ndouble xyz;\nfor (int i = 0; i &lt; nums.length; i++) {\n    xyz = ((a * nums[i]) * nums[i]) + b * nums[i] + c;\n    newList.add(xyz);\n    } return newList; \n} \npublic static void main (String[] args) {\nQuickSort obj = new QuickSort();\ndouble nums[] = {1,2,4, 9,5,3,0};\nint a = 1, b = 0, c = 0;\nArrayList list = obj.Solve(nums, a, b, c);\nlist = obj.sort(list, 0, (nums.length - 1));\nfor (int i = 0; i \");\n       current = current.next();\n       count++;\n      if(count == 10)\n        break;\n    }       \n   return sb.toString();\n}\npublic static class Node {\n    private Node next;\n    private String data;\n    public Node(String data) {\n        this.data = data;\n    }\n    public String data() { \n      return data; \n    }        \n    public void setData(String data) {\n      this.data = data;\n    }\n    public Node next() { \n      return next; \n    }        \n    public void setNext(Node next) {\n      this.next = next; \n    }\n    @Override\n    public String toString() {\n        return this.data;\n    }\n}\n}\npublic class LoopInLinkedListTest { \npublic static void main(String args[]) { \n  LinkedList linkedList = new LinkedList();\n  if(false){\n    linkedList.appendIntoTail(new LinkedList.Node(\"101\")); \n    linkedList.appendIntoTail(new LinkedList.Node(\"201\")); \n    linkedList.appendIntoTail(new LinkedList.Node(\"301\")); \n    linkedList.appendIntoTail(new LinkedList.Node(\"401\")); \n    System.out.println(\"Linked List : \" + linkedList); \n  }else{\n    linkedList.appendIntoTail(new LinkedList.Node(\"101\"));\n    LinkedList.Node cycle = new LinkedList.Node(\"201\");\n    linkedList.appendIntoTail(cycle);\n    linkedList.appendIntoTail(new LinkedList.Node(\"301\"));\n    linkedList.appendIntoTail(new LinkedList.Node(\"401\"));\n    linkedList.appendIntoTail(cycle); \n    System.out.println(\"Linked List : \" + linkedList);\n  }         \n  if(linkedList.isCyclic()){ \n      System.out.println(\"contains loop\"); \n    }\n    else{ \n      System.out.println(\"no loop\"); \n    } \n\n}\n}<\/code><\/pre>\n<\/li>\n<li><strong>Check if a linked list is a palindrome or not.<\/strong><br \/>\nAns.<\/p>\n<pre><code>class Node {\n    int data;\n    Node next;\n    public Node(int data) {\n        this.data = data;\n        this.next = null;\n    }\n}\npublic int size;\npublic Node head = null;\npublic Node tail = null;\npublic void addNode(int data) {\n    Node node = new Node(data);\n    if(head == null) {\n        head = node;\n        tail = node;\n    } else {\n        tail.next = node;\n        tail = node;\n    }\n    size++;\n}\npublic Node reverseList(Node temp) {\n    Node current = temp;\n    Node prevNode = null;\n    Node nextNode = null;\n    while(current != null) {\n        nextNode = current.next;\n        current.next = prevNode;\n        prevNode = current;\n        current = nextNode;\n    }\n    return prevNode;    \n}\npublic void isPalindrome() {\n    Node current = head;\n    boolean flag = true;\n    int mid = (size % 2 == 0) ? (size\/2) : ((size+1)\/2);\n    for(int i = 1; i &lt; mid; i++) {\n        current = current.next;\n    }\n    Node revHead = reverseList(current.next);\n    while(head != null &amp;&amp; revHead != null) {\n        if(head.data != revHead.data) {\n            flag = false;\n            break;\n        }\n        head = head.next;\n        revHead = revHead.next;\n    }\n    if(flag) {\n        System.out.println(&quot;\\nPalondrome !&quot;);\n    } else {\n        System.out.println(&quot;\\nnot Palindrome !&quot;);\n    }\n}\npublic void display() {\n    Node current = head;\n    while(current != null) {\n        System.out.print(current.data + &quot; &quot;);\n        current = current.next;\n    }\n    System.out.println(&quot; &quot;);\n}\npublic static void main(String[] args) {\n    LinkedListCheckPalindrome linkedList = new LinkedListCheckPalindrome();\n    linkedList.addNode(1);\n    linkedList.addNode(2);\n    linkedList.addNode(3);\n    linkedList.addNode(2);\n    linkedList.addNode(1);\n    linkedList.display();\n    linkedList.isPalindrome();\n}<\/code><\/pre>\n<\/li>\n<li><strong>Find pairs in the array such that its sum is closest to 0.<\/strong><br \/>\nAns.<\/p>\n<pre><code>public static void PairWithMinSum(int arr[]) {\n    int minimumSum = arr[0] + arr[1];\n    int pair1stIndex = 0;\n    int pair2ndIndex = 1;\n    for (int i = 0; i &lt; arr.length; i++) {\n        for (int j = i + 1; j &lt; arr.length; j++) {\n            int tempSum = arr[i] + arr[j];\n            if (Math.abs(tempSum) &lt; Math.abs(minimumSum)) {\n                pair1stIndex = i;\n                pair2ndIndex = j;\n                minimumSum = tempSum;\n            }\n        }\n    }\n    System.out.println( arr[pair1stIndex] + &quot;  &quot; + arr[pair2ndIndex]);\n}\npublic static void main(String[] args) {\n    int[] arr = { 2, 3, -1, 5, 6, -3};\n    PairWithMinSum(arr);\n}<\/code><\/pre>\n<\/li>\n<li><strong>Given an array of 0\u2019s and 1\u2019s in random order, you need to separate 0\u2019s and 1\u2019s in an array.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public static int[] separate0s1sSolution1(int arr[]){\nint count=0;\nfor (int i = 0; i &lt; arr.length; i++) {\nif(arr[i]==0)\n{\ncount++;\n}\n}\nfor (int i = 0; i &lt; count; i++) {\narr[i]=0;\n}\nfor (int i = count; i &lt; arr.length; i++) {\narr[i]=1;\n}\nreturn arr;\n}<\/code><\/pre>\n<\/li>\n<li><strong>You are given an array, find the subarray with a given sum.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public void findSubarraySum(int arr[], int target) {        \n    int left = 0;\n    int right = left + 1;\n    int sum = 0;\n    if (arr.length == 0) {\n        System.out.println(&quot;-1&quot;);\n        return;\n    } \n    if (arr.length == 1) {          \n        if (arr[0] == target) {\n            System.out.println((arr[0] + 1) + &quot; &quot; + (arr[0] + 1));\n        } else {\n            System.out.println(&quot;-1&quot;);\n        }\n    }\n    sum += arr[left] + arr[right];\n    while (right &lt; arr.length) {         \n        if (sum == target) {\n            System.out.println((left + 1) + &quot; &quot; + (right + 1));\n            return;\n        } else if (sum &lt; target) {               \n            right++;\n            if (right = 0) {\n        int n = in.nextInt();\n        int target = in.nextInt();\n        int[] arr = new int[n];\n        for (int i = 0; i &lt; arr.length; i++) {\n            arr[i] = in.nextInt();\n        }       \n        ss.findSubarraySum(arr, target);\n    }\n}<\/code><\/pre>\n<\/li>\n<li><strong>You are given an array, find the maximum subarray sum.<\/strong><br \/>\nAns. We will use Kadane\u2019s algorithm here <\/p>\n<pre><code>public static void main(String[] args) {\n    int[] Arr = {5,2,-1,-2,3,-5,1};\n    findMaxSubArray(Arr);\n}\npublic static void findMaxSubArray(int[] inputArray) {\n    int maxStartIndex = 0;\n    int maxEndIndex = 0;\n    int maxSum = Integer.MIN_VALUE;\n    int cumulativeSum = 0;\n    int maxStartIndexUntilNow = 0;\n    for (int currentIndex = 0; currentIndex  maxSum) {\n            maxSum = cumulativeSum;\n            maxStartIndex = maxStartIndexUntilNow;\n            maxEndIndex = currentIndex;\n        } \n        if (cumulativeSum &lt; 0) {\n            maxStartIndexUntilNow = currentIndex + 1;\n            cumulativeSum = 0;\n        }\n    }\n    System.out.println(maxSum);\n}<\/code><\/pre>\n<\/li>\n<li><strong>Write a function to add two numbers represented by two linked list.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public ListNode addTwoNumbers(ListNode l1, ListNode l2) {\n    if (l1 == null || l2 == null) {\n        return l1 == null ? l2 : l1;\n    }\n    Stack s1 = new Stack();\n    Stack s2 = new Stack();\n    Stack result = new Stack();\n    while (l1 != null) {\n        s1.push(l1);\n        l1 = l1.next;\n    }\n    while (l2 != null) {\n        s2.push(l2);\n        l2 = l2.next;\n    }\n    int carry = 0;\n    while (!s1.isEmpty() || !s2.isEmpty()) {\n        int sum = carry;\n        if (!s1.isEmpty()) {\n            sum += s1.pop().val;\n        }\n        if (!s2.isEmpty()) {\n            sum += s2.pop().val;\n        }\n        carry = sum \/ 10;\n        sum = sum % 10;\n        result.push(new ListNode(sum));\n    }\n    if (carry != 0) {\n        result.push(new ListNode(carry));\n    }\n    ListNode node = new ListNode(-1);\n    ListNode temp = node;\n    while (!result.isEmpty()) {\n        node.next = result.pop();\n        node = node.next;\n    }\n    return temp.next;\n}<\/code><\/pre>\n<\/li>\n<li><strong>Write a program to find the first non-repeating character of a string.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public static charsolve(String word) {\n    Set duplicate = new HashSet();\n    List nonDuplicate = new ArrayList();\n    for (int i = 0; i &lt; word.length(); i++) {\n        char letter = word.charAt(i);\n        if (duplicate.contains(letter)) {\n            continue;\n        }\n        if (nonDuplicate.contains(letter)) {\n            nonDuplicate.remove((Character) letter);\n            duplicate.add(letter);\n        } else {\n            nonDuplicate.add(letter);\n        }\n    }\n    return nonDuplicate.get(0);\n}<\/code><\/pre>\n<\/li>\n<li><strong>Write a program to find the duplicate characters in a string.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public static void main(String[] args) {\n              String str = new String(&quot;duplicatestring&quot;);\n              int count = 0;\n              char[] chars = str.toCharArray();\n              for (int i=0; i&lt;str.length();i++) {\n                          for(int j=i+1; j&lt;str.length();j++) {\n                                     if (chars[i] == chars[j]) {\n                                                System.out.println(chars[j]);\n                                                count++;\n                                                break;\n                                      }\n                           }\n               }\n       }<\/code><\/pre>\n<\/li>\n<li><strong>Print all the substrings of a string.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public static void PrintSubstring(String str, int length) {\n    for (int i = 0; i &lt; length; i++) {\n        for (int j = i + 1; j  -1; i--) {\n        sb.append(arr[i]).append(\" \");\n    }\n    return sb.toString().trim();\n}\npublic static void main(String args[]) {\n    Scanner in = new Scanner(System.in);\n    String s = in.nextLine();\n    in.close();\n    System.out.println(reverseLine(s));\n}<\/code><\/pre>\n<\/li>\n<li><strong>Implement an algorithm of counting sort.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public static void countingSort(int[] input, int k) {\n    int counter[] = new int[k + 1];\n    for(int i : input) {\n        counter[i]++;\n    }\n    int ndx = 0;\n    for(int i = 0; i &lt; counter.length; i++) {\n        while( 0 &lt; counter[i]) {\n            input[ndx++] = i;\n            counter[i]--;\n        }\n    }\n}\npublic static void main(String[] args) {\n    int[] input = { 60, 40, 30, 20, 10, 40, 30, 60, 60, 20, 40, 30, 40 };\n    int k = 60;\n    countingSort(input, k);\n    System.out.println(Arrays.toString(input));\n}<\/code><\/pre>\n<\/li>\n<li><strong>Give a recursive function for Inorder traversal of a Binary Tree.<\/strong><br \/>\nAns.<\/p>\n<pre><code>void inOrderTraversal2(TreeNode node) {\n    if (node == null) {\n        return;\n    }\n    inOrderTraversal2(node.left);\n    System.out.println(node.val);\n    inOrderTraversal2(node.right);\n}<\/code><\/pre>\n<\/li>\n<li><strong>Check if a given Binary tree is height balanced or not. You will be given a root to that tree.<\/strong><br \/>\nAns. <\/p>\n<pre><code>class TreeNode {\n    int value;\n    TreeNode left, right;\n}\npublic boolean isBalanced(TreeNode root) {\n    if (root == null)\n        return true;\n    int left = getHeight(root.left);\n    int right = getHeight(root.right);\n    if (Math.abs(left - right) &lt;= 1)\n        return isBalanced(root.left) &amp;&amp; isBalanced(root.right);\n    else\n        return false;\n}\npublic int getHeight(TreeNode root) {\n    if (root == null)\n        return 0;\n    else {\n        int left = getHeight(root.left);\n        int right = getHeight(root.right);\n        return Math.max(left, right) + 1;\n    }\n}<\/code><\/pre>\n<\/li>\n<li><strong>Write a program to invert a Binary Tree.<\/strong><br \/>\nAns. <\/p>\n<pre><code>class TreeNode {\n    int val;\n    TreeNode left;\n    TreeNode right;\n    TreeNode(int x) {\n        val = x;\n    }\n}\npublic TreeNode invertTree(TreeNode root) {\n    if(root == null)\n        return null;\n    TreeNode result = new TreeNode(root.val);        \n    result.right = this.invertTree(root.left);\n    result.left = this.invertTree(root.right);        \n    return result;\n}<\/code><\/pre>\n<\/li>\n<li><strong>Write a program to sort a stack recursively.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public static void main(String args[]) {\n    Stack stack = new Stack();\n    stack.push(1);\n    stack.push(2);\n    stack.push(4);\n    stack.push(3);\n    stack.push(-2);     \n    for (Integer i: stack) {\n        System.out.print(i + \", \");\n    }\n    System.out.println();       \n    sort(stack);\n    for (Integer i: stack) {\n        System.out.print(i + \", \");\n    }\n    System.out.println();\n}   \npublic static void sort(Stack stack) {\n    removeElement(stack);\n}   \nprivate static void removeElement(Stack stack) {\n    if(!stack.isEmpty()) {\n        int tmp = stack.pop();\n        removeElement(stack);\n        insertElement(tmp, stack);\n    }\n}\nprivate static void insertElement(int tmp, Stack stack) {\n    if(stack.isEmpty() || tmp &gt;= stack.peek()) {\n        stack.push(tmp);\n    }\n    else {\n        int poped = stack.pop();\n        insertElement(tmp, stack);\n        stack.push(poped);\n    }\n}<\/code><\/pre>\n<\/li>\n<li><strong>Implement a queue using two stacks.<\/strong><br \/>\nAns. <\/p>\n<pre><code>Stack entryStack;\nStack exitStack;\npublic MyQueue() {\n    this.entryStack = new Stack();\n    this.exitStack = new Stack();\n}\npublic void push(int x) {\n    this.entryStack.push(x);\n}    \npublic int pop() {\n    while(!this.entryStack.isEmpty()){\n        this.exitStack.push(this.entryStack.pop());\n    }\n    int retValue = this.exitStack.pop();\n    while(!this.exitStack.isEmpty()){\n        this.entryStack.push(this.exitStack.pop());\n    }\n    return retValue;\n}\npublic int peek() {\n    while(!this.entryStack.isEmpty()){\n        this.exitStack.push(this.entryStack.pop());\n    }\n    int retValue = this.exitStack.peek();\n    while(!this.exitStack.isEmpty()){\n        this.entryStack.push(this.exitStack.pop());\n    }\n    return retValue;\n}    \npublic boolean empty() {\n    return this.entryStack.isEmpty();\n}<\/code><\/pre>\n<\/li>\n<li><strong>Implement an LRU cache in Java.<\/strong><br \/>\nAns. <\/p>\n<pre><code>class Node {\n    int key;\n    int value;\n    Node prev;\n    Node next;\n    public Node(int key, int value){\n        this.key = key;\n        this.value = value;\n    }\n}    \nclass DoublyLinkedList {\n    Node head;\n    Node tail;        \n    public boolean isEmpty(){\n        return this.head == null;\n    }        \n    public void addToHead(Node node){\n        if(this.isEmpty()){\n            this.head = this.tail = node;\n            node.prev = null;\n            node.next = null;\n        }\n        else{\n            node.prev = null;\n            node.next = this.head;\n            this.head.prev = node;\n            this.head = node;\n        }\n    }        \n    public Node deleteFromTail(){\n        Node node = this.tail;\n        if(this.head == this.tail){\n            this.head = this.tail = null;\n        }\n        else{\n            this.tail = this.tail.prev;\n            this.tail.next = null;   \n        }\n        return node;\n    }        \n    public void moveToHead(Node node){\n        if(this.head == node)\n            return;\n        else if(this.tail == node){\n            this.deleteFromTail();\n            this.addToHead(node);\n        }\n        else{\n            node.prev.next = node.next;\n            if(node.next != null)\n                node.next.prev = node.prev;\n            node.next = null;\n            node.prev = null;\n            this.addToHead(node);\n        }\n    }\n}    \nHashMap nodes;\nDoublyLinkedList list;\nint count, capacity;\npublic LRUCache(int capacity) {\n    this.capacity = capacity;\n    this.count = 0;\n    this.nodes = new HashMap();\n    this.list = new DoublyLinkedList();\n}    \npublic int get(int key) {\n    if(nodes.containsKey(key)){\n        Node node = nodes.get(key);\n        this.list.moveToHead(node);\n        return node.value;\n    }\n    else\n        return -1;\n}    \npublic void put(int key, int value) {\n    if(nodes.containsKey(key)){\n        Node node = nodes.get(key);\n        node.value = value;\n        this.list.moveToHead(node);\n    }\n    else{\n        Node node = new Node(key, value);\n        nodes.put(key, node);\n        this.count++;\n        this.list.addToHead(node);\n        if(this.count &gt; this.capacity){\n            Node toDelete = this.list.deleteFromTail();\n            this.nodes.remove(toDelete.key);\n            this.count--;\n        }\n    }\n}\n\/**\n* Your LRUCache object will be instantiated and called as such:\n* LRUCache obj = new LRUCache(capacity);\n* int param_1 = obj.get(key);\n* obj.put(key,value);\n*\/<\/code><\/pre>\n<\/li>\n<li><strong>Traverse the Binary tree in zig-zag way and print the nodes.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public class TreeNode {\n      int val;\n      TreeNode left;\n      TreeNode right;\n      TreeNode() {}\n      TreeNode(int val) { this.val = val; }\n      TreeNode(int val, TreeNode left, TreeNode right) {\n          this.val = val;\n          this.left = left;\n          this.right = right;\n      }\n  }\npublic List&lt;List&gt; zigzagLevelOrder(TreeNode root) {\n        List&lt;List&gt; result = new LinkedList();\n        if(root == null) return result;\n        Queue queue = new LinkedList();\n        queue.add(root);\n        boolean direction = false;\n        while(queue.size() &gt; 0){\n            direction = !direction;\n            Queue level = new LinkedList();\n            List rlevel = new LinkedList();\n            while(queue.size() &gt; 0){\n                TreeNode node = queue.poll();\n                if(direction){\n                    rlevel.add(node.val);\n                }else{\n                    rlevel.add(0,node.val);\n                }\n                if(node.left != null) level.add(node.left);\n                if(node.right != null) level.add(node.right);\n            }\n            result.add(rlevel);\n            queue = level;\n        }\n        return result;\n    }<\/code><\/pre>\n<\/li>\n<li><strong>Write a program to traverse a graph in BFS.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public class Graph {\nprivate final int v;\nprivate final LinkedList[] adjacents;\npublic Graph(int v) {\n    this.v = v;\n    adjacents = new LinkedList[v];\n    for (int i = 0; i &lt; v; ++i) {\n        adjacents[i] = new LinkedList();\n    }\n}\nvoid addEdge(int v, int e) {\n    adjacents[v].add(e);\n}\nvoid BFS(int start) {\n    boolean visited[] = new boolean[v];\n    LinkedList queue = new LinkedList();\n    visited[start] = true;\n    queue.add(start);\n    while (!queue.isEmpty()) {\n        start = queue.poll();\n        System.out.print(start + \" \");\n        Iterator i = adjacents[start].listIterator();\n        while (i.hasNext()) {\n            int n = i.next();\n            if (!visited[n]) {\n                visited[n] = true;\n                queue.add(n);\n            }\n        }\n    }\n}\npublic static void main(String[] args) {\n    Graph graph = new Graph(4);\n    graph.addEdge(0, 3);\n    graph.addEdge(0, 1);\n    graph.addEdge(1, 0);\n    graph.addEdge(2, 3);\n    graph.addEdge(3, 0);\n    graph.addEdge(3, 2);\n    graph.addEdge(3, 3);        \n    graph.BFS(0);\n}\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Write a function to insert a node in Binary Search Tree.<\/strong><br \/>\nAns. <\/p>\n<pre><code>static Node Insert(Node root, int value){\nNode newNode = new Node();\nnewNode.data = value;\nnewNode.left = null;\nnewNode.right = null;    \nif (root == null) {\n    return newNode;    }\n\naddNode(root, newNode);\nreturn root;\n}\nstatic void addNode(Node root, Node newNode) {\nif (newNode.data &lt; root.data) {\n    if (root.left == null) {\n        root.left = newNode;\n    } else {\n        addNode(root.left, newNode);\n    }\n} else {\n    if (root.right == null) {\n        root.right = newNode;\n    } else {\n        addNode(root.right, newNode);\n    }\n} \n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Suppose you are given an array and you are asked to find the triplets whose sum will be a given target sum. If your array contains such a triplet return the sum else -1.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public ArrayList&lt;ArrayList&gt; threeSum(int[] num) {\n    ArrayList&lt;ArrayList&gt; result = new ArrayList&lt;ArrayList&gt;();\n    if (num.length &lt; 3) {\n        return result;\n    }\n\n    Arrays.sort(num);\n\n    for (int i = 0 ; i &lt; num.length - 2 ; i++) {\n        if (i != 0 &amp;&amp; num[i] == num[i-1]) {\n            continue;\n        }\n        int left = i + 1;\n        int right = num.length - 1;\n\n        while (left &lt; right) {\n            int sum = num[i] + num[left] + num[right];\n            if (sum  0) {\n                right--;\n            } else {\n                ArrayList temp = new ArrayList();\n                temp.add(num[i]);\n                temp.add(num[left]);\n                temp.add(num[right]);\n                result.add(temp);\n                do {\n                    left++;\n                } while (left  left &amp;&amp; num[right] == num[right+1]);\n            }\n        }\n    }\n    return result;\n}<\/code><\/pre>\n<\/li>\n<li><strong>Find the Kth largest element in an array.<\/strong><br \/>\nAns. <\/p>\n<pre><code>public int kthLargestElement(int k, ArrayList nums) {\n    if (nums == null || nums.size() == 0) {\n        return 0;\n    }\n    return helper(nums, 0, nums.size() - 1, nums.size() - k);\n}    \npublic void swap( ArrayListnums, int x, int y){\n    int temp = nums.get(x);\n    nums.set(x, nums.get(y));\n    nums.set(y, temp);\n}    \npublic int helper( ArrayList nums, int start, int end, int mid) {\n    int pivot = end;\n    int num = nums.get(pivot);\n    int low = start;\n    int high = end;\n    while (low &lt; high) {\n        while(low &lt; high &amp;&amp; nums.get(low) &lt; num) {\n            low++;\n        }\n        while(low = num) {\n            high--;\n        }\n        swap(nums, low, high);\n    }\n    swap(nums, low, pivot);\n    if (low == mid) {\n        return nums.get(low);\n    } else if (low &lt; mid) {\n        return helper(nums, low + 1, end, mid);\n    } else {\n        return helper(nums, start, low - 1, mid);\n    }\n}<\/code><\/pre>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Check if a given number is palindrome or not. Ans. A palindrome is a number which is when reversed give the same number. We find the reverse and check whether it is equal to the given number or not. public static void main(String[] args) { Scanner in = new Scanner(System.in); String str = in.nextLine(); int [&hellip;]<\/p>\n","protected":false},"author":52,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[143],"tags":[],"class_list":["post-2663","post","type-post","status-publish","format-standard","hentry","category-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Top 30 Java Programming interview questions | Java Prgramming<\/title>\n<meta name=\"description\" content=\"A palindrome is a number which is when reversed give the same number. We find the reverse and check whether it is equal to the given number or not.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Top 30 Java Programming interview questions | Java Prgramming\" \/>\n<meta property=\"og:description\" content=\"A palindrome is a number which is when reversed give the same number. We find the reverse and check whether it is equal to the given number or not.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/\" \/>\n<meta property=\"og:site_name\" content=\"PrepBytes Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prepbytes0211\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-07T10:40:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-10T17:49:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1646202336103-B_365-java.png\" \/>\n<meta name=\"author\" content=\"Prepbytes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prepbytes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Top 30 Java Programming interview questions\",\"datePublished\":\"2021-04-07T10:40:58+00:00\",\"dateModified\":\"2022-03-10T17:49:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/\"},\"wordCount\":364,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1646202336103-B_365-java.png\",\"articleSection\":[\"Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/\",\"name\":\"Top 30 Java Programming interview questions | Java Prgramming\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1646202336103-B_365-java.png\",\"datePublished\":\"2021-04-07T10:40:58+00:00\",\"dateModified\":\"2022-03-10T17:49:41+00:00\",\"description\":\"A palindrome is a number which is when reversed give the same number. We find the reverse and check whether it is equal to the given number or not.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1646202336103-B_365-java.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1646202336103-B_365-java.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/java\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Top 30 Java Programming interview questions\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/43.205.93.38\/#website\",\"url\":\"http:\/\/43.205.93.38\/\",\"name\":\"PrepBytes Blog\",\"description\":\"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING\",\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/43.205.93.38\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/43.205.93.38\/#organization\",\"name\":\"Prepbytes\",\"url\":\"http:\/\/43.205.93.38\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"contentUrl\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"width\":160,\"height\":160,\"caption\":\"Prepbytes\"},\"image\":{\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/prepbytes0211\/\",\"https:\/\/www.instagram.com\/prepbytes\/\",\"https:\/\/www.linkedin.com\/company\/prepbytes\/\",\"https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA\"]},{\"@type\":\"Person\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\",\"name\":\"Prepbytes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"caption\":\"Prepbytes\"},\"url\":\"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Top 30 Java Programming interview questions | Java Prgramming","description":"A palindrome is a number which is when reversed give the same number. We find the reverse and check whether it is equal to the given number or not.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/","og_locale":"en_US","og_type":"article","og_title":"Top 30 Java Programming interview questions | Java Prgramming","og_description":"A palindrome is a number which is when reversed give the same number. We find the reverse and check whether it is equal to the given number or not.","og_url":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2021-04-07T10:40:58+00:00","article_modified_time":"2022-03-10T17:49:41+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1646202336103-B_365-java.png","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Top 30 Java Programming interview questions","datePublished":"2021-04-07T10:40:58+00:00","dateModified":"2022-03-10T17:49:41+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/"},"wordCount":364,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1646202336103-B_365-java.png","articleSection":["Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/","url":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/","name":"Top 30 Java Programming interview questions | Java Prgramming","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1646202336103-B_365-java.png","datePublished":"2021-04-07T10:40:58+00:00","dateModified":"2022-03-10T17:49:41+00:00","description":"A palindrome is a number which is when reversed give the same number. We find the reverse and check whether it is equal to the given number or not.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1646202336103-B_365-java.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1646202336103-B_365-java.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/top-30-java-programming-interview-questions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/prepbytes.com\/blog\/category\/java\/"},{"@type":"ListItem","position":3,"name":"Top 30 Java Programming interview questions"}]},{"@type":"WebSite","@id":"http:\/\/43.205.93.38\/#website","url":"http:\/\/43.205.93.38\/","name":"PrepBytes Blog","description":"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING","publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/43.205.93.38\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/43.205.93.38\/#organization","name":"Prepbytes","url":"http:\/\/43.205.93.38\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/","url":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","contentUrl":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","width":160,"height":160,"caption":"Prepbytes"},"image":{"@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/prepbytes0211\/","https:\/\/www.instagram.com\/prepbytes\/","https:\/\/www.linkedin.com\/company\/prepbytes\/","https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA"]},{"@type":"Person","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e","name":"Prepbytes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","caption":"Prepbytes"},"url":"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/"}]}},"_links":{"self":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2663","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/comments?post=2663"}],"version-history":[{"count":7,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2663\/revisions"}],"predecessor-version":[{"id":7936,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2663\/revisions\/7936"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=2663"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=2663"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=2663"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}