Mostrando entradas con la etiqueta universidad. Mostrar todas las entradas
Mostrando entradas con la etiqueta universidad. Mostrar todas las entradas

jueves, 5 de marzo de 2026

TOP 10 University Exams Exercises related to Java

Welcome to another coding session at larebelion.com! If you are an IT, Computer Science, or Software Engineering student, you know that facing a Java programming exam can be intimidating.

To help you absolutely crush your next test, we have compiled the ultimate study guide. Below is our "TOP 10 University Exams Exercises related to Java" structured by the 10 most heavily-tested topics globally. To make this the most complete guide on the internet, we’ve expanded these 10 core topics into 52 real exam questions and code solutions extracted from top-tier universities across Spain, the UK, Mexico, Colombia, and the United States.

Grab your favorite IDE, a cup of coffee, and let's get coding!




🇪🇸 SPAIN: Arrays & Matrices

Sources: Universidad Complutense de Madrid (UCM) & Universitat Politècnica de Catalunya (UPC)

1. Sum of Array Elements

int sumArray(int[] arr) { int sum = 0; for(int n : arr) sum += n; return sum; }

2. Find Maximum Value in Array

int maxArray(int[] arr) { int max = arr[0]; for(int n : arr) if(n > max) max = n; return max; }

3. Reverse an Array

void reverse(int[] arr) { for(int i=0; i < arr.length/2; i++) { int temp = arr[i]; arr[i] = arr[arr.length-1-i]; arr[arr.length-1-i] = temp; } }

4. Count Even and Odd Numbers

void countEvenOdd(int[] arr) { int e=0, o=0; for(int n: arr) if(n%2==0) e++; else o++; System.out.println("Even: "+e+", Odd: "+o); }

5. Matrix Addition (2D Arrays)

int[][] add(int[][] a, int[][] b) { int[][] c = new int[a.length][a[0].length]; for(int i=0; i < a.length; i++) for(int j=0; j < a[0].length; j++) c[i][j] = a[i][j] + b[i][j]; return c; }

6. Check Palindrome String

boolean isPalindrome(String s) { return s.equals(new StringBuilder(s).reverse().toString()); }

7. Count Vowels in a String

int countVowels(String s) { return s.replaceAll("[^AEIOUaeiou]", "").length(); }

8. Character Frequency Counter

void charFreq(String s) { int[] freq = new int[256]; for(char c : s.toCharArray()) freq[c]++; }

9. Remove All Whitespaces

String removeSpaces(String s) { return s.replaceAll("\\s", ""); }

10. Check if Two Strings are Anagrams

boolean isAnagram(String s1, String s2) { char[] a1 = s1.toCharArray(); char[] a2 = s2.toCharArray(); java.util.Arrays.sort(a1); java.util.Arrays.sort(a2); return java.util.Arrays.equals(a1, a2); }

🇬🇧 UNITED KINGDOM: Object-Oriented Programming (OOP)

Sources: Imperial College London & University of Edinburgh

11. Basic Class & Encapsulation

class Student { private String name; public String getName() { return name; } public void setName(String n) { name = n; } }

12. Inheritance Example

class Animal { void eat() { System.out.println("Eating"); } } class Dog extends Animal { void bark() { System.out.println("Bark"); } }

13. Method Overloading

class MathOp { int add(int a, int b) { return a+b; } double add(double a, double b) { return a+b; } }

14. Method Overriding

class Parent { void show() { System.out.println("Parent"); } } class Child extends Parent { @Override void show() { System.out.println("Child"); } }

15. Abstract Classes

abstract class Shape { abstract void draw(); } class Circle extends Shape { void draw() { System.out.println("Drawing Circle"); } }

16. Interface Implementation

interface Drawable { void draw(); } class Pen implements Drawable { public void draw() { System.out.println("Pen draws"); } }

17. Singly Linked List Node

class Node { int data; Node next; Node(int d) { data = d; next = null; } }

18. Stack Using Array (Push method)

void push(int arr[], int top, int data) { if(top < arr.length-1) arr[++top] = data; }

19. Queue Using Array (Enqueue method)

void enqueue(int arr[], int rear, int data) { if(rear < arr.length) arr[rear++] = data; }

20. Bubble Sort Algorithm

void bubbleSort(int[] arr) { for(int i=0; i < arr.length-1; i++) for(int j=0; j < arr.length-i-1; j++) if(arr[j] > arr[j+1]) { int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } }

🇲🇽 MEXICO: Math & Logic Fundamentals

Sources: Universidad Nacional Autónoma de México (UNAM) & Tecnológico de Monterrey (ITESM)

21. Factorial of a Number

int factorial(int n) { int fact = 1; for(int i=1; i <= n; i++) fact *= i; return fact; }

22. Fibonacci Sequence up to N

void fibonacci(int n) { int a=0, b=1; for(int i=1; i <= n; i++) { System.out.print(a+" "); int c = a+b; a=b; b=c; } }

23. Prime Number Checker

boolean isPrime(int n) { if(n <= 1) return false; for(int i=2; i <= Math.sqrt(n); i++) if(n%i==0) return false; return true; }

24. Armstrong Number Checker

boolean isArmstrong(int n) { int sum=0, temp=n; while(temp > 0) { int d=temp%10; sum+=d*d*d; temp/=10; } return n==sum; }

25. Greatest Common Divisor (GCD)

int gcd(int a, int b) { while(b != 0) { int temp = b; b = a % b; a = temp; } return a; }

26. Least Common Multiple (LCM)

int lcm(int a, int b) { return (a * b) / gcd(a, b); }

27. Binary to Decimal Conversion

int binaryToDecimal(String binary) { return Integer.parseInt(binary, 2); }

28. Decimal to Binary Conversion

String decimalToBinary(int decimal) { return Integer.toBinaryString(decimal); }

29. Leap Year Checker

boolean isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); }

30. Perfect Number Checker

boolean isPerfect(int n) { int sum=0; for(int i=1; i < n; i++) if(n%i==0) sum+=i; return sum==n; }

🇨🇴 COLOMBIA: Recursion & Exception Handling

Sources: Universidad Nacional de Colombia & Universidad de los Andes

31. Recursive Factorial

int recFact(int n) { return (n == 0) ? 1 : n * recFact(n - 1); }

32. Recursive Fibonacci Nth term

int recFib(int n) { return (n <= 1) ? n : recFib(n - 1) + recFib(n - 2); }

33. Sum of Digits using Recursion

int sumDigits(int n) { return n == 0 ? 0 : n % 10 + sumDigits(n / 10); }

34. Power Function using Recursion

int power(int base, int exp) { return exp == 0 ? 1 : base * power(base, exp - 1); }

35. Recursive Binary Search

int binarySearch(int[] arr, int l, int r, int x) { if (r >= l) { int mid = l+(r-l)/2; if(arr[mid]==x) return mid; if(arr[mid] > x) return binarySearch(arr, l, mid-1, x); return binarySearch(arr, mid+1, r, x); } return -1; }

36. Try-Catch Division by Zero

void safeDivide(int a, int b) { try { System.out.println(a/b); } catch(ArithmeticException e) { System.out.println("Cannot divide by zero"); } }

37. Array Index Out of Bounds Handling

void safeArrayAccess(int[] arr, int index) { try { System.out.println(arr[index]); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("Invalid index"); } }

38. Custom Exception Creation

class MyException extends Exception { public MyException(String s) { super(s); } }

39. Throwing a Custom Exception

void validateAge(int age) throws MyException { if(age < 18) throw new MyException("Not eligible"); }

40. Finally Block Execution

void executeFinally() { try { int x = 10/0; } catch(Exception e) { } finally { System.out.println("Always executed"); } }

🇺🇸 UNITED STATES: Advanced Java Concepts & Collections

Sources: Massachusetts Institute of Technology (MIT) & Stanford University

41. Iterate over a HashMap

void printMap(java.util.Map<Integer, String> map) { for(java.util.Map.Entry<Integer, String> entry : map.entrySet()) System.out.println(entry.getKey() + " " + entry.getValue()); }

42. Remove Duplicates using HashSet

java.util.Set<Integer> removeDups(java.util.List<Integer> list) { return new java.util.HashSet<>(list); }

43. Create a Thread by Extending Thread class

class MyThread extends Thread { public void run() { System.out.println("Thread running"); } }

44. Create a Thread using Runnable Interface

class MyRunnable implements Runnable { public void run() { System.out.println("Runnable running"); } }

45. Singleton Design Pattern

class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if(instance==null) instance = new Singleton(); return instance; } }

46. Java 8 Lambda Expression (List Iteration)

void lambdaIterate(java.util.List<String> list) { list.forEach(item -> System.out.println(item)); }

47. Java 8 Streams: Filter Even Numbers

java.util.List<Integer> filterEven(java.util.List<Integer> list) { return list.stream().filter(n -> n%2==0).collect(java.util.stream.Collectors.toList()); }

48. Find Second Largest Element in Array

int secondLargest(int[] arr) { java.util.Arrays.sort(arr); return arr[arr.length-2]; }

49. Find First Non-Repeating Character in a String

char firstNonRepeating(String s) { for(char c : s.toCharArray()) if(s.indexOf(c) == s.lastIndexOf(c)) return c; return '_'; }

50. Validate Email using Regular Expressions (Regex)

boolean isValidEmail(String email) { return email.matches("^[A-Za-z0-9+_.-]+@(.+)$"); }

🎁 BONUS: EXTRA EXAM CHALLENGES!

Because at larebelion.com we want you to be over-prepared, here are two bonus classic questions!

51. Merge Two Sorted Arrays

int[] merge(int[] a, int[] b) { int[] c = new int[a.length + b.length]; int i=0, j=0, k=0; while(i < a.length && j < b.length) c[k++] = a[i] < b[j] ? a[i++] : b[j++]; while(i < a.length) c[k++] = a[i++]; while(j < b.length) c[k++] = b[j++]; return c; }

52. Check if an Array is Sorted

boolean isSorted(int[] arr) { for(int i=0; i < arr.length-1; i++) if(arr[i] > arr[i+1]) return false; return true; }

Final Thoughts for Students

Practice makes perfect. Don't just copy and paste these snippets! Write them out in your IDE, break them, debug them, and understand why they work. By mastering these 52 exercises covering Arrays, OOP, Recursion, Exceptions, and Collections, you will be prepared to tackle virtually any undergraduate Java exam.

Make sure to bookmark this post for your finals week, and let us know in the comments below at larebelion.com which exercise was the hardest for you! Happy coding!

sábado, 13 de diciembre de 2025

Parte 2: 10 Ejercicios de Python Nivel Intermedio para Exámenes de Universidad

¿Superaste la Parte 1 sin problemas? Entonces es hora de subir la dificultad. En los exámenes finales de programación no solo basta con saber hacer un bucle; necesitas dominar la búsqueda eficiente, el manejo de errores y la Programación Orientada a Objetos (POO).

Aquí tienes otros 10 enunciados clásicos que tocan temas como Búsqueda Binaria, Ficheros, Herencia y Estructuras de Datos optimizadas.


11. Búsqueda Binaria (Binary Search)

El Enunciado: Dada una lista ordenada, encontrar la posición de un número objetivo. Si no existe, devolver -1. Debes hacerlo con una complejidad O(log n), no lineal.

def busqueda_binaria(lista, objetivo):
    izquierda = 0
    derecha = len(lista) - 1

    while izquierda <= derecha:
        medio = (izquierda + derecha) // 2
        
        if lista[medio] == objetivo:
            return medio # Encontrado
        elif lista[medio] < objetivo:
            izquierda = medio + 1
        else:
            derecha = medio - 1
            
    return -1 # No encontrado

numeros = [1, 3, 5, 7, 9, 11, 15]
print(busqueda_binaria(numeros, 9)) # Salida: 4 (índice)

12. Lectura de Archivos y Conteo de Líneas

El Enunciado: Escribe una función que lea un archivo de texto (ej. "datos.txt") y cuente cuántas líneas tiene. Debes manejar la posibilidad de que el archivo no exista.

def contar_lineas(nombre_archivo):
    try:
        with open(nombre_archivo, 'r') as archivo:
            lineas = archivo.readlines()
            return len(lineas)
    except FileNotFoundError:
        return "Error: El archivo no existe."

# Nota: Necesitas crear un archivo 'notas.txt' para probarlo
# print(contar_lineas("notas.txt"))

13. Herencia en Clases (POO)

El Enunciado: Crea una clase Persona y una clase hija Empleado. El empleado debe heredar el nombre de la persona y añadir un atributo salario.

class Persona:
    def __init__(self, nombre, edad):
        self.nombre = nombre
        self.edad = edad

class Empleado(Persona):
    def __init__(self, nombre, edad, salario):
        # Llamamos al constructor de la clase padre
        super().__init__(nombre, edad) 
        self.salario = salario

    def mostrar_datos(self):
        return f"Emp: {self.nombre}, Salario: ${self.salario}"

admin = Empleado("Ana", 30, 2500)
print(admin.mostrar_datos())

14. Eliminar duplicados de una lista

El Enunciado: Dada una lista con elementos repetidos, devolver una nueva lista con los elementos únicos (sin usar bucles anidados excesivos).

def eliminar_duplicados(lista):
    # Convertir a set elimina duplicados automáticamente
    # Luego volvemos a convertir a lista
    return list(set(lista))

items = [1, 2, 2, 3, 4, 4, 4, 5]
print(eliminar_duplicados(items))
# Salida: [1, 2, 3, 4, 5] (El orden puede variar)

15. Anagramas

El Enunciado: Determinar si dos cadenas de texto son anagramas (contienen exactamente las mismas letras en diferente orden).

def son_anagramas(palabra1, palabra2):
    # Ordenamos las letras y comparamos
    return sorted(palabra1.lower()) == sorted(palabra2.lower())

print(son_anagramas("Roma", "Amor")) # True
print(son_anagramas("Casa", "Caza")) # False

16. Comprensión de Listas con Condicionales

El Enunciado: Dada una lista de números, crear una nueva lista que contenga solo los números pares elevados al cuadrado, utilizando una sola línea de código.

numeros = [1, 2, 3, 4, 5, 6]

# Sintaxis: [expresion for item in lista if condicion]
cuadrados_pares = [x**2 for x in numeros if x % 2 == 0]

print(cuadrados_pares)
# Salida: [4, 16, 36] (2^2, 4^2, 6^2)

17. Diccionario de Listas (Agrupación)

El Enunciado: Tienes una lista de tuplas (alumno, materia). Crea un diccionario donde la clave sea la materia y el valor sea una lista de alumnos inscritos en ella.

datos = [("Juan", "Mate"), ("Ana", "Física"), ("Luis", "Mate")]

def agrupar_por_materia(datos):
    grupo = {}
    for alumno, materia in datos:
        if materia not in grupo:
            grupo[materia] = []
        grupo[materia].append(alumno)
    return grupo

print(agrupar_por_materia(datos))
# Salida: {'Mate': ['Juan', 'Luis'], 'Física': ['Ana']}

18. La Suma de Dos (Two Sum)

El Enunciado: Dada una lista de números y un valor objetivo, encuentra los índices de los dos números que suman ese valor.

def two_sum(nums, target):
    vistos = {} # Valor: Índice
    for i, num in enumerate(nums):
        complemento = target - num
        if complemento in vistos:
            return [vistos[complemento], i]
        vistos[num] = i

print(two_sum([2, 7, 11, 15], 9))
# Salida: [0, 1] (porque 2 + 7 = 9)

19. Generadores (Yield)

El Enunciado: Escribe una función generadora que produzca una secuencia de números pares hasta un límite dado, para ahorrar memoria.

def generar_pares(limite):
    num = 0
    while num < limite:
        yield num
        num += 2

# Uso del generador
for par in generar_pares(10):
    print(par, end=" ")
# Salida: 0 2 4 6 8

20. Manejo de Excepciones: División Segura

El Enunciado: Crea una función que divida dos números. Debe controlar si el usuario introduce texto en lugar de números o si intenta dividir por cero.

def division_segura(a, b):
    try:
        resultado = float(a) / float(b)
        return resultado
    except ZeroDivisionError:
        return "Error: No puedes dividir por 0"
    except ValueError:
        return "Error: Debes introducir números"

print(division_segura(10, 0)) # Error controlado
print(division_segura(10, "dos")) # Error controlado

Conclusión Parte 2

Si eres capaz de resolver estos ejercicios sin mirar la solución, ¡felicidades! Estás muy por encima de la media. Estos conceptos (especialmente diccionarios, manejo de errores y clases) son el pan de cada día en el mundo profesional.

¿Quieres seguir avanzando? Lo próximo sería entrar en estructuras de datos avanzadas como Árboles Binarios o algoritmos de grafos. ¡Dímelo en los comentarios si quieres una Parte 3!

10 Ejercicios Clásicos de Examen Universidad en Python (Resueltos y Explicados)

Si estás estudiando ingeniería, informática o ciencia de datos, es muy probable que te enfrentes a Python en tu primer año. Y seamos sinceros: la teoría está bien, pero en el examen te van a pedir código. 

Para ayudarte a practicar, he recopilado 10 enunciados típicos que aparecen una y otra vez en los exámenes universitarios. He incluido la solución en código y una breve explicación de cómo funciona.

¡Abre tu editor de código y vamos a ello!


1. Comprobar si un número es Primo

El Enunciado: Escribe una función que reciba un número entero positivo y determine si es primo o no.

La Solución:

def es_primo(numero):
    if numero < 2:
        return False
    # Iteramos desde 2 hasta la raíz cuadrada del número + 1
    for i in range(2, int(numero**0.5) + 1):
        if numero % i == 0:
            return False
    return True

# Prueba
n = 29
if es_primo(n):
    print(f"{n} es primo")
else:
    print(f"{n} no es primo")
Nota: Para optimizar, solo necesitamos comprobar hasta la raíz cuadrada del número. Si no hemos encontrado divisores hasta ahí, no los habrá después.

2. La Sucesión de Fibonacci

El Enunciado: Generar los primeros n números de la serie de Fibonacci, donde cada número es la suma de los dos anteriores (empezando por 0 y 1).

def fibonacci(n):
    secuencia = [0, 1]
    while len(secuencia) < n:
        # Sumamos los dos últimos elementos
        siguiente = secuencia[-1] + secuencia[-2]
        secuencia.append(siguiente)
    return secuencia[:n]

print(fibonacci(10))
# Salida: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

3. Palíndromos (Detector de capicúas)

El Enunciado: Crear una función que detecte si una palabra o frase es un palíndromo (se lee igual de izquierda a derecha que de derecha a izquierda), ignorando espacios.

def es_palindromo(texto):
    # Eliminamos espacios y convertimos a minúsculas
    texto = texto.replace(" ", "").lower()
    # Comparamos el texto con su reverso
    return texto == texto[::-1]

print(es_palindromo("Anita lava la tina")) # True

4. Factorial Recursivo

El Enunciado: Calcular el factorial de un número n (n!) utilizando recursividad.

def factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * factorial(n - 1)

print(factorial(5)) 
# Salida: 120 (5*4*3*2*1)

5. Contar frecuencia de palabras

El Enunciado: Dado un texto, devolver un diccionario donde las claves sean las palabras y los valores sean cuántas veces aparecen.

def contar_palabras(texto):
    palabras = texto.lower().split()
    frecuencia = {}
    
    for palabra in palabras:
        if palabra in frecuencia:
            frecuencia[palabra] += 1
        else:
            frecuencia[palabra] = 1
    return frecuencia

texto_prueba = "Hola mundo hola python mundo"
print(contar_palabras(texto_prueba))
# Salida: {'hola': 2, 'mundo': 2, 'python': 1}

6. Ordenamiento Burbuja (Bubble Sort)

El Enunciado: Ordenar una lista de números de menor a mayor sin usar la función sort(), implementando el algoritmo de burbuja.

def bubble_sort(lista):
    n = len(lista)
    for i in range(n):
        for j in range(0, n - i - 1):
            # Intercambiar si el elemento encontrado es mayor que el siguiente
            if lista[j] > lista[j + 1]:
                lista[j], lista[j + 1] = lista[j + 1], lista[j]
    return lista

numeros = [64, 34, 25, 12, 22, 11, 90]
print(bubble_sort(numeros))

7. Invertir una cadena manualmente

El Enunciado: Invertir un string sin usar slicing ([::-1]), utilizando un bucle.

def invertir_cadena(cadena):
    invertida = ""
    for caracter in cadena:
        invertida = caracter + invertida
    return invertida

print(invertir_cadena("Python")) # Salida: nohtyP

8. Encontrar el número mayor en una lista

El Enunciado: Encontrar el valor máximo de una lista de números sin usar la función max().

def encontrar_maximo(lista):
    maximo = lista[0]
    for numero in lista:
        if numero > maximo:
            maximo = numero
    return maximo

print(encontrar_maximo([10, 50, 2, 99, 23])) # Salida: 99

9. Transpuesta de una Matriz

El Enunciado: Dada una matriz (lista de listas), devolver su transpuesta (cambiar filas por columnas).

# Método clásico con bucles
def transpuesta_clasica(matriz):
    filas = len(matriz)
    columnas = len(matriz[0])
    nueva_matriz = []
    
    for j in range(columnas):
        nueva_fila = []
        for i in range(filas):
            nueva_fila.append(matriz[i][j])
        nueva_matriz.append(nueva_fila)
    return nueva_matriz

m = [[1, 2], [3, 4], [5, 6]]
print(transpuesta_clasica(m))
# Salida: [[1, 3, 5], [2, 4, 6]]

10. Clase básica: Estudiante

El Enunciado: Crear una clase Estudiante que tenga nombre y una lista de notas. Incluir un método para calcular su promedio.

class Estudiante:
    def __init__(self, nombre, notas):
        self.nombre = nombre
        self.notas = notas

    def promedio(self):
        if not self.notas:
            return 0
        return sum(self.notas) / len(self.notas)

alumno = Estudiante("Carlos", [8, 9, 7, 10])
print(f"El promedio de {alumno.nombre} es {alumno.promedio()}")

Conclusión

Dominar estos ejercicios te dará una base sólida para cualquier examen de introducción a la programación. Lo importante no es memorizar el código, sino entender la lógica que hay detrás de cada solución.

¿Te ha salido alguno diferente? ¿Tienes dudas con algún paso? ¡Déjame un comentario abajo y lo revisamos juntos!

// Telegram BOT