Skip to content

Instantly share code, notes, and snippets.

View csurio's full-sized avatar

Sharvie csurio

View GitHub Profile
@csurio
csurio / guia-prueba-tecnica-java.md
Last active September 26, 2025 23:14
Guía de Preparación de Entorno — Prueba Técnica Java (8 horas)

Guía de Preparación de Entorno

Prueba Técnica Java (8 horas)

Objetivo: Tener todo listo para iniciar a codificar en el minuto 0: Docker corriendo con la BD vacía, mensajería lista, proyectos base de Backend (Spring Boot) y Frontend (JSF 2.3 + CDI) generados y probados localmente.


1) Requisitos previos

  • Java 17 (o 21) instalado y en PATH (java -version).
@csurio
csurio / Guia_Push_MFA_Aprobacion_Fuera_de_Banda.md
Created August 11, 2025 21:36
Autenticación por Aprobación Fuera de Banda (OOB - Out Of Band)

Guía Profesional: Autenticación por Aprobación Fuera de Banda (Push MFA) con Dispositivo Confiable

Fecha: 2025-08-11 Autor: Carlos Surio Equipo de Arquitectura / Backend Resumen ejecutivo:
Este documento describe, de manera práctica y paso a paso, cómo implementar un flujo de autenticación estilo Microsoft Authenticator/Google/Facebook, en el que un inicio de sesión realizado desde un dispositivo no confiable queda pendiente hasta que se autoriza desde un dispositivo confiable (app Authenticator) mediante biometría y firma criptográfica. Incluye introducción teórica, arquitectura, modelo de datos, APIs, seguridad, y una propuesta de implementación con Java/Spring Boot, Redis, PostgreSQL, y notificaciones push (FCM/APNs).


Cuestionario de RRHH - TechLead

En cada cuadrante se ha seleccionado una palabra que MÁS describe el perfil y una que MENOS lo hace, reflejando un enfoque de liderazgo técnico con habilidades de comunicación, colaboración y toma de decisiones estratégicas.

Cuadrante 1

Palabra Selección
Entusiasta
Rápido(a) MÁS
Lógico(a)

Cuestionario de RRHH - Perfil Desarrollador Java Senior

En cada cuadrante se ha seleccionado una palabra que MÁS describe el perfil y una que MENOS lo hace, orientado a un desarrollador Java Senior con enfoque técnico, analítico, metódico, y con habilidades blandas funcionales.

Cuadrante 1

Palabra Selección
Entusiasta
Rápido(a)
Lógico(a) MÁS
@csurio
csurio / java-developer-high-questions.md
Created March 6, 2025 19:44
Entrevista Desarrollador Java Senior

🔹 Preguntas de Entrevista Técnica para un Desarrollador Java Senior

1. ¿Cómo manejarías una incidencia crítica en producción?

Respuesta: Lo primero que hago es mantener la calma y evaluar el impacto. En entornos bancarios, una caída en el sistema de pagos puede costar miles de dólares por minuto, así que actúo rápido.

  1. Revisión de logs: Uso herramientas como Kibana o Splunk para buscar errores relevantes.
  2. Monitoreo de métricas: Consulto Prometheus o Grafana para detectar picos de carga o consumo anormal de recursos.
  3. Rollback inmediato si es necesario: Si una nueva versión está causando problemas, aplico un rollback con Kubernetes o Cloud Build.
  4. Revisión post-mortem: Documentamos el incidente, analizamos la causa raíz y tomamos acciones para evitar que se repita (pruebas adicionales, alertas tempranas, etc.).
@csurio
csurio / java-developer-mid-questions.md
Last active March 6, 2025 17:47
Entrevista Técnica para un Desarrollador Java

🔹 Entrevista Técnica para un Desarrollador Java

1. ¿Cómo manejas errores en Java? ¿Usas try-catch en todas partes?

Respuesta: No, no se trata de envolver todo en try-catch como si fuera cinta adhesiva. Lo importante es manejar los errores donde tenga sentido y no simplemente atraparlos y ocultarlos. Por ejemplo, en un servicio REST, si algo falla, lanzo una excepción personalizada con un código HTTP adecuado. En procesos batch, prefiero logs detallados y notificaciones, para saber qué falló sin detener todo el proceso.

2. ¿Cómo optimizarías una consulta a base de datos en una aplicación Spring Boot?

Respuesta: Primero, reviso si realmente necesito hacer la consulta en cada llamada. Uso caché (Redis) si los datos no cambian tanto. Luego, verifico que los índices de la base de datos estén bien configurados y que no esté trayendo más columnas de las necesarias. Si la consulta sigue lenta, reviso si necesito paginación o usar fetch join en lugar de lazy loading.

Para mejorar el rendimie

@csurio
csurio / spring-boot-cheat-sheet.md
Created February 26, 2025 17:42
Spring Boot Cheat Sheet

Java Spring Boot - Cheat Sheet

1. Comandos Básicos de Spring Boot CLI

Instalación de Spring Boot CLI

# Instalar con SDKMAN
sdk install springboot
@csurio
csurio / preguntas-entrevista.md
Created February 26, 2025 15:21
job-interview-questions

Preguntas y Respuestas para Entrevista de Trabajo

1. ¿Por qué te interesa este puesto?

Respuesta: "Me interesa mucho este puesto en [nombre de la empresa] porque tengo experiencia en [mencionar habilidades o áreas relacionadas], y creo que mis habilidades pueden ser valiosas para el equipo. Además, estoy muy interesado en [mencionar aspectos específicos del trabajo] y siento que esta oportunidad me permitiría crecer en ese aspecto. También estoy emocionado por la posibilidad de trabajar con el equipo de [nombre del equipo] y ser parte de la cultura de [nombre de la empresa]."

2. ¿Cuál es tu objetivo en la vida?

Respuesta: "Mi objetivo a largo plazo es construir una carrera exitosa en [tu campo de trabajo] y seguir creciendo profesionalmente. Me motiva la idea de [mencionar un logro o contribución específica que te gustaría hacer en tu carrera]. Creo que [nombre de la empresa] ofrece un entorno ideal para alcanzar mis objetivos debido a su enfoque en [mencionar aspectos específicos de la empr

@csurio
csurio / java-tech-questions.md
Last active February 26, 2025 15:17
Preguntas Tecnicas Java

Preguntas Tecnicas Java

📌 Newbie Level

1. ¿Qué es Java?

Respuesta: Java es un lenguaje de programación de propósito general, orientado a objetos, que sigue el paradigma de "Write Once, Run Anywhere" (WORA) gracias a la JVM.

2. ¿Cuál es la diferencia entre JDK, JRE y JVM?

Respuesta:

  • JDK (Java Development Kit): Incluye el JRE y herramientas de desarrollo como el compilador javac.