Está en la página 1de 14

Preguntas Entrevista:

Christian te amo
Micael puto😡
Cami te amo🥰

1. Programación Orientada a Objetos (Que es?) en que se basa cada uno de


sus pilares? (Abstracción, Encapsulamiento, Herencia y Polimorfismo)
(importante)
La POO es una forma especial de programar, más cercana a
como expresaríamos las cosas en la vida real que otros tipos de
programación. Se define como un paradigma de la programación, una
manera de programar específica, donde se organiza el código en
unidades denominadas clases, de las cuales se crean objetos que
se relacionan entre sí para conseguir los objetivos de las
aplicaciones.

● Abstracción:
○ es un proceso de interpretación y diseño que
implica reconocer y enfocarse en las
características importantes de una situación u
objeto, y filtrar o ignorar todas las
particularidades no esenciales.
● Encapsulamiento:
○ Es la propiedad que permite asegurar que la
información de un objeto está oculta del mundo
exterior.
○ El encapsulamiento consiste en agrupar en una
Clase las características(atributos) con un acceso
privado y los comportamientos (métodos) con un
acceso público.
○ Acceder o modificar los miembros de una clase a
través de sus métodos
● Herencia:
○ Es una propiedad que permite crear clases a partir
de otras ya existentes, obteniendo características
(métodos y atributos) similares a los ya
existentes.En otras palabras la nueva clase
(subclase o clase derivada) puede utilizar la
misma implementación de su superclase (clase base)
o especificar una nueva implementación.

● Polimorfismo:
○ Son comportamientos diferentes, asociados a
objetos distintos, pueden compartir el mismo
nombre; al llamarlos por ese nombre se utilizará
el comportamiento correspondiente al objeto que se
esté usando.

2. Que es herencia? Como se usa? Para que sirve?


La herencia permite que se puedan definir nuevas clases
basadas de unas ya existentes a fin de reutilizar el código,
generando así una jerarquía de clases dentro de una aplicación.
Si una clase deriva de otra, esta hereda sus atributos y métodos
y puede añadir nuevos atributos, métodos o redefinir los
heredados.

3. Diferencia entre polimorfismo estatico y polimorfismo dinamico


Polimorfismo dinámico (o polimorfismo paramétrico) es aquél
en el que el código no incluye ningún tipo de especificación
sobre el tipo de datos sobre el que se trabaja. Así, puede ser
utilizado a todo tipo de datos compatible.
Polimorfismo estático (o polimorfismo ad hoc) es aquél en el
que los tipos a los que se aplica el polimorfismo deben ser
explicitados y declarados uno por uno antes de poder ser
utilizados.

4. Java, que es Java?


Java es un lenguaje de programación y una plataforma
informática de propósito general orientado a objetos.

5. Java 8, que trae Java 8 que cambia todo al momento de desarrollar y


manejar estructuras de datos?(pista, trae streams y programación
funcional)
● Streams: es que pueden procesarse de forma serializada
o paralela y proporcionan un estilo de operaciones más
funcionales. Un flujo consiste un una fuente (una
colección), varias operaciones intermedias (de filtrado
o transformación) y una operación final que produce un
resultado (suma, cuenta…). Los streams son lazy de modo
que las operaciones solo se realizan cuando se llama a
la operación final, también son eficientes no
necesitando en algunos casos procesar todos los
elementos del stream para devolver el resultado final
● Lambda: son funciones que no está asociadas a un
determinado nombre y que pueden pasarse como argumento
a otras funciones

6. Que es programación funcional en java? Para que sirve? (va de la mano con
los streams)
La programación funcional es un paradigma de programación
declarativa que usa múltiples funciones para realizar cálculos y
transformaciones a los datos de entrada para producir un
resultado

7. Que es una interface funcional en java(va de la mano con programación


funcional)
Es aquella que solo tiene un método abstracto (sin
implementación). Algunos ejemplos de interfaces funcionales son
Runnable, ActionListener, Comparator y Callable.

8. Diferencia entre una clase y una interfaz, para que se usa cada una?
a. Una clase abstracta puede heredar o extender cualquier clase
(independientemente de que esta sea abstracta o no),
mientras que una interfaz solamente puede extender o
implementar otras interfaces.
b. Una clase abstracta puede heredar de una sola clase
(abstracta o no) mientras que una interfaz puede extender
varias interfaces de una misma vez.
c. Una clase abstracta puede tener métodos que sean abstractos
o que no lo sean, mientras que las interfaces sólo y
exclusivamente pueden definir métodos abstractos.
d. En java concretamente (ya que has puesto la etiqueta Java),
en las clases abstractas la palabra abstract es obligatoria
para definir un método abstracto (así como la clase). Cuando
defines una interfaz, esta palabra es opcional ya que se
infiere en el concepto de interfaz.
e. En una clase abstracta, los métodos abstractos pueden ser
public o protected. En una interfaz solamente puede haber
métodos públicos.
f. En una clase abstracta pueden existir variables static,
final o static final con cualquier modificador de acceso
(public, private, protected o default). En una interfaz sólo
puedes tener constantes (public static final).

9. Estructuras de datos, Para que sirven? (List, Set, Map) Cuales son sus
diferencias? Cuando uso una y cuando uso otra?
Collection:
● Contenedor simple de objetos no ordenados.
● Los duplicados son permitidos.

List:
● Contenedor de elemento ordenados.
● Los duplicados son permitidos.
Set:
● Colección desordenada de objetos.
● Los duplicados no son permitidos.
Map:
● Colección de pares clave/valor.
● La clave es usada para indexar el elemento.
● Las claves duplicadas no son permitas.

10. Que es concurrencia?


La Concurrencia permite que distintos objetos actúen al
mismo tiempo, usando diferentes hilos de control (un solo
proceso)

11. Que es programación reactiva? Va de la mano con concurrencia


La programación reactiva es un paradigma enfocado en el
trabajo con flujos de datos finitos o infinitos de manera
asíncrona.

12. Spring Framework (Que es? En que se basa?)


Spring Framework es un framework que nos facilita el trabajo
y que fundamentalmente se centra en simplificar y flexibilizar la
creación de objetos en nuestro programa.
está dividido en diversos módulos que podemos utilizar,
ofreciéndonos muchas más funcionalidades:

● Core container: proporciona inyección de dependencias e


inversión de control.
● Web: nos permite crear controladores Web, tanto de
vistas MVC como aplicaciones REST.
● Acceso a datos: abstracciones sobre JDBC, ORMs como
Hibernate, sistemas OXM (Object XML Mappers), JSM y
transacciones.
● Programación orientada a Aspectos (AOP): ofrece el
soporte para aspectos.
● Instrumentación: proporciona soporte para la
instrumentación de clases.
● Pruebas de código: contiene un framework de testing,
con soporte para JUnit y TestNG y todo lo necesario
para probar los mecanismos de Spring.
Estos módulos son opcionales
13. Spring Boot (Que es? En que se basa?)
Spring Boot permite compilar nuestras aplicaciones Web como
un archivo .jar que podemos ejecutar como una aplicación Java
normal (como alternativa a un archivo .war, que desplegaríamos en
un servidor de aplicaciones como Tomcat).

14. Cual es la diferencia entre Spring Framework y Spring Boot?


Spring Boot es una herramienta que nos permite crear un
proyecto como con Spring Framework, solo que Spring Boot elimina
ciertas configuraciones repetitivas requeridas para desplegar la
aplicación o proyecto.
Spring Framework es el marco de trabajo que cuenta con
muchos módulos y herramientas que permiten crear una aplicación
con Java.
Spring Boot es una herramienta que nos permite crear un
aplicación Spring de manera rápida para desplegar rápidamente
nuestra aplicación, evitando tener que realizar manualmente
ciertas configuraciones.

15. MVC(Model View Controller) Que es? Para que sirve? Para que sirve
cada capa?
Modelo-vista-controlador es un patrón de arquitectura de
software, que separa los datos y principalmente lo que es la
lógica de negocio de una aplicación de su representación y el
módulo encargado de gestionar los eventos y las comunicaciones.
Define la forma en que se organizan los componentes de
presentación en sistemas distribuidos.
En la capa Modelo encontraremos siempre una representación
de los datos del dominio, es decir, aquellas entidades que nos
servirán para almacenar información del sistema que estamos
desarrollando
Los componentes de la Vista son los responsables de generar
la interfaz de nuestra aplicación, es decir, de componer las
pantallas, páginas, o cualquier tipo de resultado utilizable por
el usuario o cliente del sistema.
El Controlador es actuar como intermediarios entre el
usuario y el sistema.

16. Para que sirven las capas adicionales a MVC (Service,Repository),


para que sirve cada una?
Repositorio de la Capa de mayor nivel de abstracción de
acceso a datos
Capa de servicio expone la lógica de negocio, que utiliza el
repositorio
17. Que es un proceso batch/job
Básicamente un proceso batch es un trabajo que puede ser
completado sin la intervención de un usuario el cual se ejecuta
en un segundo plano
Spring Batch provee funcionalidades esenciales para el
procesamiento de grandes volúmenes de registros, logs,
transacciones, procesamiento de estadisticas, omisiones,
reinicio de procesos, etc. Los procesos por lotes, o batch
processing requieren normalmente grandes cantidades de
recursos
JOB: Es un entidad que encapsula todo el proceso que se
quiere realizar en el batch. en síntesis es un contenedor de
diferentes pasos “De ahora en adelante STEPS” que tiene el
proceso en un flujo determinado por los desarrolladores.

18. Que es un microservicio


Los microservicios son un enfoque arquitectónico y
organizativo para el desarrollo de software donde el software
está compuesto por pequeños servicios independientes que se
comunican a través de API bien definidas

19. Que es xml y json? Para que se usa cada uno?


XML (Lenguaje de Marcado Extensible) ha sido una forma
popular de estructurar datos usando un lenguaje de marcado
familiar. Es a la vez humano y legible por máquina y es muy
similar en apariencia al lenguaje HTML. Sigue un conjunto de
estándares para la comunicación de datos a través de redes entre
dispositivos y es iterativamente parseable. Una ventaja de
consumir datos en este formato es su estructura
JSON (JavaScript Object Notation) es un formato de
intercambio de datos basado en texto derivado del lenguaje de
encriptación de JavaScript. Está formateado como pares clave-
valor y es a menudo elogiado como un overhead menor a XML, ya que
se centra más en el contenido y menos en el formato. Esto
funciona a nuestro favor cuando queremos mantener los paquetes de
intercambio de datos tan compactos posibles. Ahora, para ser
justos con XML, es posible formatearlo de formas específicas o
usar compresión para que sea comparable en tamaño a JSON, pero
generalmente encuentro JSON que es mucho más pequeño en tamaño y
por lo tanto preferible a XML.

20. Que es REST y SOAP? Cuales son sus diferencias?


REST y SOAP son dos enfoques distintos para la transmisión
de datos en línea. Específicamente, ambas definen cómo diseñar
interfaces de programación de aplicaciones (API), las cuales
permiten la comunicación de datos entre aplicaciones web. La
transferencia de estado representacional (REST) es un conjunto de
principios arquitectónicos, mientras que el protocolo simple de
acceso a objetos (SOAP) es un protocolo oficial de cuyo
mantenimiento se encarga el Consorcio World Wide Web (W3C). La
principal diferencia es que SOAP es un protocolo, y REST no lo
es.

21. Que es un patron de diseño en programacion? ejemplos (Strategy,


Facade, Factory, Singleton)
Los patrones de diseño son un conjunto de prácticas de
óptimo diseño que se utilizan para abordar problemas recurrentes
en la programación orientada a objetos.

Los patrones de diseño pretenden:


● Proporcionar catálogos de elementos reusables en el
diseño de sistemas software.
● Evitar la reiteración en la búsqueda de soluciones a
problemas ya conocidos y solucionados anteriormente.
● Formalizar un vocabulario común entre diseñadores.
● Estandarizar el modo en que se realiza el diseño.
● Facilitar el aprendizaje de las nuevas generaciones de
diseñadores condensando conocimiento ya existente.

Patrones de comportamiento

➔ Strategy: Permite definir una familia de algoritmos, colocar cada


uno de ellos en una clase separada y hacer sus objetos
intercambiables.
➔ Patrones creacionales
➔ Builder: Permite construir objetos complejos paso a paso. Este
patrón nos permite producir distintos tipos y representaciones de
un objeto empleando el mismo código de construcción.
➔ Factory: Proporciona una interfaz para la creación de objetos en
una superclase, mientras permite a las subclases alterar el tipo
de objetos que se crearán.
➔ Singleton: Permite asegurarnos de que una clase tenga una única
instancia, a la vez que proporciona un punto de acceso global a
dicha instancia.
➔ Patrones estructurales

➔ Facade: Proporciona una interfaz simplificada a una biblioteca,


un framework o cualquier otro grupo complejo de clases.
22. Que es una ORM (Object Relational Mapping)? (hibernate) Para que
sirve una ORM?
El mapeo objeto-relacional es una técnica de programación
para convertir datos entre el sistema de tipos utilizado en un
lenguaje de programación orientado a objetos y la utilización de
una base de datos relacional como motor de persistencia.

23. Hibernate, que es hibernate?


Hibernate es una herramienta de mapeo objeto-relacional
(ORM) para la plataforma Java que facilita el mapeo de atributos
entre una base de datos relacional tradicional y el modelo de
objetos de una aplicación, mediante archivos declarativos (XML) o
anotaciones en los beans de las entidades que permiten establecer
estas relaciones.

24. Estrategias de carga en hibernate (lazy,eager), para que sirve cada


una, cuales son sus diferencias?
Tanto FetchType.LAZY como FetchType.EAGER se utilizan para
definir el plan de recuperación predeterminado .
FetchType.LAZY está bajo demanda (es decir, cuando
solicitamos los datos).
FetchType.EAGER es inmediato (es decir, antes de que lleguen
nuestros requisitos, estamos obteniendo innecesariamente el
registro)

25. Managers de Dependencia, Para que sirve? (Maven, Gradle)


Gradle es un sistema de automatización de compilación que
utiliza un lenguaje específico de dominio basado en el lenguaje
de programación Groovy.

Maven se utiliza para la automatización de la construcción


de proyectos utilizando Java, que utiliza XML para la
configuración de su proyecto.

Diferencias fundamentales:

Gradle se basa en un gráfico de dependencias de tareas, en


el que las tareas son las cosas que hacen el trabajo.
Maven se basa en un modelo fijo y lineal de fases
(implementación de paquetes de instalación limpia, etc.).

26. Que es el pom.xml? (de la mano con Managers de Dependencia)


Maven utiliza un Project Object Model (POM) para describir
el proyecto de software a construir, sus dependencias de otros
módulos y componentes externos, y el orden de construcción de los
elementos. Viene con objetivos predefinidos para realizar ciertas
tareas claramente definidas, como la compilación del código y su
empaquetado.

27. Que es una base de datos relacional? SQL(Structured Query


Language) En que difiere con una base de datos no relacional?
Una base de datos relacional es un tipo de base de datos que
almacena y proporciona acceso a puntos de datos relacionados
entre sí. Las bases de datos relacionales se basan en el modelo
relacional, una forma intuitiva y directa de representar datos en
tablas. En una base de datos relacional, cada fila de la tabla es
un registro con un ID único llamado clave. Las columnas de la
tabla contienen atributos de los datos, y cada registro
generalmente tiene un valor para cada atributo, lo que facilita
el establecimiento de las relaciones entre los puntos de datos.

Una base de datos no relacional es aquella que no usa el esquema


tabular de filas y columnas que se encuentra en la mayoría de los
sistemas de base de datos más tradicionales.

Diferencia:
● SQL permite combinar de forma eficiente diferentes
tablas para extraer información relacionada, mientras
que NoSQL no lo permite o muy limitadamente.
● NoSQL permite distribuir grandes cantidades de
información; mientras que SQL facilita distribuir bases
de datos relacionales.
● SQL permite gestionar los datos junto con las
relaciones existentes entre ellos; en NoSQL no existe
este tipo de utilidades .
● NoSQL permite un escalado horizontal sin problemas –
por su capacidad de distribución-; mientras que escalar
SQL resulta más complicado.

28. SQL (trigger,stored procedure, view, materialized view, function), que


son? En que difieren entre si y para que sirve cada uno?
● Trigger: es una funcionalidad que la base de datos
ejecuta de forma automática cuando se realiza una
operación de tipo Insert, Update o Delete en una tabla
o vista, o cuando se ejecuta una consulta SQL sobre una
tabla o vista.
● Store Procedure: es un conjunto de comandos SQL que
pueden almacenarse en el servidor. Pueden ser
ejecutados en cualquier momento
● View: es el conjunto de resultados de una consulta
almacenada en los datos
● Materialized View: el resultado de la consulta se
almacena en una tabla caché real, que será actualizada
de forma periódica a partir de las tablas originales
● Function: es una rutina almacenada que recibe unos
parámetros escalares de entrada, los procesa según la
definición de la función y finalmente retorna un
resultado de un tipo específico que permitirá su
utilización con un objetivo

29. Que es spring cloud


Es una nueva pieza de Spring que nos ayuda a desplegar
nuestro artefacto (WAR o JAR) a las plataformas en la nube.
Spring-cloud permite que las aplicaciones descubran su
propia información/configuración en ejecución, además ofrece
un mecanismo de extensión para trabajar en múltiples clouds
y servicios Cloud.

Los conceptos principales de Spring Cloud son:

1. Cloud Connector: interfaz que un proveedor Cloud puede


implementar para permitir que el sistema funcione al
modo PaaS.
2. Service Connector: un objeto (como
javax.sql.DataSource) que representa una conexión a un
servicio
3. Service information: Información sobre el Servicio
subyacente (host, Puerto, credenciales,…)
4. Application information: Información sobre la
aplicación e instancia en el que las librerías están
embebidas.

30. Que es AWS (lambda,api gateway,cognito,sqs,dynamodb)


Es la plataforma en la nube más adoptada y completa en el
mundo, que ofrece más de 200 servicios integrales de centros de
datos a nivel global
● AWS Lambda es un servicio informático que permite
ejecutar código sin aprovisionar ni administrar
servidores
● API GATEWAY: es un servicio de AWS para crear,
publicar, mantener, monitorear y proteger las API de
REST, HTTP y WebSocket a cualquier escala.
● COGNITO: es un proveedor de autenticación completamente
administrado que permite el registro, la verificación,
el inicio de sesión del usuario y más
● SQS: es un servicio distribuido de colas de mensajes
● DYNAMODB: es un servicio de base de datos noSQL
ofrecido por Amazon como parte de Amazon Web Services.
DynamoDB expone un modelo de datos similar y deriva su
nombre de Dynamo

31. Que es serverless programming (va de la mano con lambda y aws)


Es el nombre que se le da a un modelo de computación en la
nube en el que los desarrolladores casi no tienen gastos
generales de administración de la infraestructura. En cambio, el
código se carga y se activa en respuesta a ciertos eventos: una
función de cambio de tamaño de la imagen que se activa cuando un
usuario carga una imagen en un servicio en línea, por ejemplo

32. Que es infraestructura? (DevOps)


DevOps es la combinación de filosofías, prácticas y
herramientas culturales que aumenta la capacidad de una
organización para entregar aplicaciones y servicios a alta
velocidad: evolucionando y mejorando productos a un ritmo más
rápido que las organizaciones que utilizan el desarrollo de
software tradicional y los procesos de gestión de la
infraestructura.

33. Azure
Microsoft Azure es conjunto en constante expansión de
servicios en la nube para ayudar a su organización a satisfacer
sus necesidades comerciales.

Todo lo que hasta ahora se trabajaba en entorno local, ahora


se gestiona en la nube. Esto supone un ahorro espectacular de
costes (implementación, mantenimiento, electricidad, etc.) todo
ello alojado en los Datacenter de Microsoft con todas las
certificaciones de seguridad y los mejores acuerdos de servicio.

34. Conocimiento Cloud


La computación en la nube (cloud computing) es una
tecnología que permite acceso remoto a softwares, almacenamiento
de archivos y procesamiento de datos por medio de Internet,
siendo así, una alternativa a la ejecución en una computadora
personal o servidor local. En el modelo de nube, no hay necesidad
de instalar aplicaciones localmente en computadoras.

La computación en la nube ofrece a los individuos y a las


empresas la capacidad de un pool de recursos de computación con
buen mantenimiento, seguro, de fácil acceso y bajo demanda.

35. Jenkins
Jenkins es un servidor de integración continua. La base de
Jenkins son las tareas, donde indicamos qué es lo que hay que
hacer en un build.

36. Patrones de Diseño de Microservicios


Patrones de integración:
● Patrón de proxy Puerta de enlace API, solo exponemos Microservicios a
través de la puerta de enlace API.
● Patrón de saga: Cuando cada servicio tiene su propia base de datos y una
transacción comercial abarca varios servicios, Coreografia(cuando no hay
una coordinación central, cada servicio produce y escucha los eventos de
otro servicio y decide si se debe tomar una acción o no)/Orquestador

37. TDD
TDD o Test-Driven Development (desarrollo dirigido por
tests) es una práctica de programación que consiste en escribir
primero las pruebas (generalmente unitarias), después escribir el
código fuente que pase la prueba satisfactoriamente y, por
último, refactorizar el código escrito.

38. Pruebas Unitarias con Spock


Spock es un framework de testing para probar aplicaciones
Java y Groovy

39. Kubernetes
Kubernetes es una plataforma de código abierto para
administrar cargas de trabajo y servicios. Kubernetes facilita la
automatización y la configuración declarativa. Tiene un
ecosistema grande y en rápido crecimiento. El soporte, las
herramientas y los servicios para Kubernetes están ampliamente
disponibles.

40. Kafka
Es una plataforma distribuida de transmisión de datos que
permite publicar, almacenar y procesar flujos de registros, y
suscribirse a ellos, en tiempo real. Está diseñada para manejar
flujos de datos de varias fuentes y distribuirlos a los diversos
usuarios.

41. Queue
es una forma lineal especial, que sólo permite la
eliminación en el extremo frontal de la mesa, mientras que el
extremo posterior de la operación de inserción de la mesa.
La clase LinkedList implementa la interfaz de cola, por lo
que puede ListaEnlazada como una cola de usar.
Agregar elementos a las colas es particularmente útil en
entornos de subprocesos múltiples. Una cola se puede compartir
entre subprocesos y usarse para bloquear el progreso hasta que
haya espacio disponible , lo que nos ayuda a superar algunos
problemas comunes de subprocesos múltiples.
Afortunadamente, Java ofrece ConcurrentLinkedQueue,
ArrayBlockingQueue y ConcurrentLinkedDeque, que son seguros para
subprocesos y perfectos para programas de subprocesos múltiples.

42. Solid
S - Single responsability ( Responsabilidad Única)
Este principio básicamente indica que cada clase debe tener
una finalidad concreta y única, de modo que no podemos añadir
métodos que no correspondan con la clase creada.

Lo que pasa es que muchas veces hemos sido tentados a añadir


metodos dentro de una clase que no corresponde por el simple
hecho que lo necesitamos en el instante, por lo cual es hora de
que dejemos esa práctica y hacer que las clases cumplan algo
concreto.

O - Open/closed (Abierto/Cerrado)
Este principio indica que las entidades que creamos deben
estar abiertas para su extension y cerradas para su modificación,
básicamente es crear clases que se puedan extender, sin necesidad
de entrar al código fuente y modificarlo, en otras palabras
encapsulación.
L - Liskov substitution (Sustitución de Liskov)
Este principio indica básicamente que lo objetos que
provienen de una clase padre pueden sustituir al padre sin que
esto altere el funcionamiento del sistema.

Es decir si tenemos la clase B que extiende a la clase A, en


nuestro sistema podemos utilizar la clase B y esta debería ser
tratada como la clase base, recalcando sin que esto altere el
funcionamiento del sistema.

I - Interface segregation (Segregación del interface)


Cuando se definen interfaces deben tener una finalidad
concreta, es mejor tener varios interfaces con pocos métodos que
sólo un interface con muchos. Es decir los metodos abstractos de
la interfaz a crear deben estar sujetos a la finalidad concreta
de la interfáz, de forma similar al principio S (Solid
responsability) pero esto específicamente a interfaces.

D - Dependency inversion (Inversión de dependencias)


El objetivo de este principio es conseguir desacoplar las
clases por medio de abstracciones para conseguir que una clase
interactue con otras clases sin que las conozca directamente.

Muchas veces algunas de nuestras clases dependen de otras,


pero debemos de encontrar la manera de que este no sea un
acoplamiento fuerte, de forma tal que no dependemos
explícitamente del Objeto, sino de una manera abstracta. Un poco
difícil de explicar pero para esto ya existen patrones como la
inyección de dependencias que aplica este principio.

43. Analisis codigo estatico


El análisis estático del código es el proceso de evaluar el
software sin ejecutarlo. La idea de este análisis es que teniendo
como entrada nuestro código fuente, podamos obtener información y
métricas que nos permita mejorar la base de código detectando
errores típicos de programación, bugs, code smells, etc
● parasoft
● sonarqube

También podría gustarte