As questões exigidas e que caem nas Provas das Consultorias, na hora da contratação

50 respostas
J


Eu vou começar, umas delas foi pra calcular o Fibonacci , é simples mas as vezes a gente se embaralha em varias formulas , então ai esta !

// Recursive fibonacci method.
 import java.math.BigInteger;

 public class FibonacciCalculator
 {
 private static BigInteger TWO =BigInteger.valueOf(2);

	public static BigInteger fibonacci(BigInteger number)
	{
	 if(number.equals(BigInteger.ZERO)|| 
	   number.equals(BigInteger.ONE))
	   return number;
	   else
		   return fibonacci(number.subtract(BigInteger.ONE)).add(fibonacci(number.subtract(TWO)));
	}
	   	// displays the fibonacci values from 0-40
		public static void main( String[] args )
		{
		for ( int counter = 0; counter <= 40; counter++ )
		System.out.printf( "Fibonacci of %d is: %d\n", counter,
		fibonacci( BigInteger.valueOf( counter ) ) );
		} // end main
 } // end class FibonacciCalculator

50 Respostas

R
Jonas backer:
Eu vou começar, umas delas foi pra calcular o Fibonacci , é simples mas as vezes a gente se embaralha em varias formulas , então ai esta !
// Recursive fibonacci method.
 import java.math.BigInteger;

 public class FibonacciCalculator
 {
 private static BigInteger TWO =BigInteger.valueOf(2);

	public static BigInteger fibonacci(BigInteger number)
	{
	 if(number.equals(BigInteger.ZERO)|| 
	   number.equals(BigInteger.ONE))
	   return number;
	   else
		   return fibonacci(number.subtract(BigInteger.ONE)).add(fibonacci(number.subtract(TWO)));
	}
	   	// displays the fibonacci values from 0-40
		public static void main( String[] args )
		{
		for ( int counter = 0; counter <= 40; counter++ )
		System.out.printf( "Fibonacci of %d is: %d\n", counter,
		fibonacci( BigInteger.valueOf( counter ) ) );
		} // end main
 } // end class FibonacciCalculator

Tem idéia de que Fibonacci recursivo tem complexidade de tempo fatorial O(n!) ?

J

BigInteger ?

R

Jonas backer:
rmendes08:

Tem idéia de que Fibonacci recursivo tem complexidade de tempo fatorial O(n!) ?

BigInteger ?

Ainda não entendi … mesmo que o BigInteger reaproveite suas instâncias, a complexidade de chamadas a add() por exemplo continua tendo complexidade fatorial. Mesmo para uma simples chamada de método, uma complexidade dessa magnitude é inaceitável.

J

Se não aceitar BigInterger , sua colocação vai ser uma tese

Vamos para a Towers Of Hanoi
public class TowersOfHanoi
{
	// recursively move disks between towers
	public static void solveTowers( int disks, int sourcePeg,
	int destinationPeg, int tempPeg )
	{
	// base case -- only one disk to move 
		if ( disks == 1 )
	{
	System.out.printf( "\n%d --> %d", sourcePeg, destinationPeg ); 
	return;
	} // end if
	// recursion step -- move (disk - 1) disks from sourcePeg 
	// to tempPeg using destinationPeg
	solveTowers( disks - 1, sourcePeg, tempPeg, destinationPeg );
	// move last disk from sourcePeg to destinationPeg 
	System.out.printf( "\n%d --> %d", sourcePeg, destinationPeg );
	// move ( disks - 1 ) disks from tempPeg to destinationPeg 
	solveTowers( disks - 1, tempPeg, destinationPeg, sourcePeg ); } 
	// end method solveTowers

	public static void main( String[] args )
	{
	int startPeg = 1; // value 1 used to indicate startPeg in output
	int endPeg = 3; // value 3 used to indicate endPeg in output
	int tempPeg = 2; // value 2 used to indicate tempPeg in output
	int totalDisks = 3; // number of disks

	// initial nonrecursive call: move all disks.
	TowersOfHanoi.solveTowers( totalDisks, startPeg, endPeg, tempPeg );
	} // end main
 } // end class TowersOfHanoi
I

Um tópico antigo interessante, que pode ajudar no assunto(Provas das Consultorias):

E

Queria saber se o seu Jonas realmente fez uma prova para contratação em consultoria.

Duvido que alguém peça para calcular Fibonacci numa prova dessas.

R

entanglement:
Queria saber se o seu Jonas realmente fez uma prova para contratação em consultoria.

Duvido que alguém peça para calcular Fibonacci numa prova dessas.


Eu nunca fiz heheh, mas ja tive que fazer aquele teste do Einstein das 5 casas, 5 cores, quem bebe o que, quem fuma o que…

Só pra não perder o post, quem quiser brincar de lógica, e não conhece o desafio, aqui vai ele:

Teste de QI - Teste de Einstein

J

Quem disse que fatorial não cai , é bem clássico !!!

public class FactorialCalculator
{	
	// recursive declaration of method factorial
	public static long factorial( long number )
	{
	long result = 1;
	
	// iterative declaration of method factorial
		for ( long i = number;	i >= 1;	i-- )	
		result *= i;	
	
	return result;
	} // end method factorial
	
	// output factorials for values 0-10
	public static void main( String[] args )
	{
		// calculate the factorials of 0 through 10
			for ( int counter = 0; counter <= 10; counter++ )
			System.out.printf( "%d! = %d\n", counter, factorial( counter ) );
		} // end main
 } // end class FactorialCalculator
J

entanglement:
Queria saber se o seu Jonas realmente fez uma prova para contratação em consultoria.

Duvido que alguém peça para calcular Fibonacci numa prova dessas.

[size=18]; -)[/size] , existe um proposito nas colocações , vamos observando !!!

R

??? :shock:

O problema na sua solução do Fibonacci não é usar ou não o BigInteger, mas sim em adotar recursão para resolvê-la. Como eu havia dito, a solução recursiva do fibonnaci acaba por gerar muitos recálculos. Já a solução iterativa não gera esse recálculos, e a torna uma solução muito melhor. Eu fiz um teste na minha máquina (um i5). Calculando Fibonnaci(40) levou 17s com a solução recursiva. A solução iterativa levou menos de 1.

Esse é um exemplo clássico sobre como é importante tomar cuidado com soluções recursivas. Apesar da escrita ficar muito mais elegante, é preciso tomar cuidado para estes casos em que você pode gerar recálculo. Um atenuante seria por exemplo, encapsular o algoritmo em um objeto de forma que você pudesse armazenar os resultados intermediários.

F

rmendes08:
O problema na sua solução do Fibonacci não é usar ou não o BigInteger, mas sim em adotar recursão para resolvê-la. Como eu havia dito, a solução recursiva do fibonnaci acaba por gerar muitos recálculos. Já a solução iterativa não gera esse recálculos, e a torna uma solução muito melhor. Eu fiz um teste na minha máquina (um i5). Calculando Fibonnaci(40) levou 17s com a solução recursiva. A solução iterativa levou menos de 1.

Esse é um exemplo clássico sobre como é importante tomar cuidado com soluções recursivas. Apesar da escrita ficar muito mais elegante, é preciso tomar cuidado para estes casos em que você pode gerar recálculo. Um atenuante seria por exemplo, encapsular o algoritmo em um objeto de forma que você pudesse armazenar os resultados intermediários.

Ai fica aquela coisa do tipo: se contestar a consultoria pode assumir que vc é do tipo nerd problema, se não fizer talvez irão deduzir erradamente (porque uma coisa pode não ter nada a ver com a outra) que você pode não saber recursão. Ou ainda você, através do tipo do teste aplicado, deduzir que a consultoria possui projetos muito ruins e que será perda de tempo trabalhar para ela em termo de conhecimento.

Enfim, testes pode ser uma coisa ruim dependendo da situação.

flws

J

entanglement:
Queria saber se o seu Jonas realmente fez uma prova para contratação em consultoria.

Duvido que alguém peça para calcular Fibonacci numa prova dessas.

++

Isso ta mais pra teste de primeiro ano de faculdade!

R

fantomas:
rmendes08:
O problema na sua solução do Fibonacci não é usar ou não o BigInteger, mas sim em adotar recursão para resolvê-la. Como eu havia dito, a solução recursiva do fibonnaci acaba por gerar muitos recálculos. Já a solução iterativa não gera esse recálculos, e a torna uma solução muito melhor. Eu fiz um teste na minha máquina (um i5). Calculando Fibonnaci(40) levou 17s com a solução recursiva. A solução iterativa levou menos de 1.

Esse é um exemplo clássico sobre como é importante tomar cuidado com soluções recursivas. Apesar da escrita ficar muito mais elegante, é preciso tomar cuidado para estes casos em que você pode gerar recálculo. Um atenuante seria por exemplo, encapsular o algoritmo em um objeto de forma que você pudesse armazenar os resultados intermediários.

Ai fica aquela coisa do tipo: se contestar a consultoria pode assumir que vc é do tipo nerd problema, se não fizer talvez irão deduzir erradamente (porque uma coisa pode não ter nada a ver com a outra) que você pode não saber recursão. Ou ainda você, através do tipo do teste aplicado, deduzir que a consultoria possui projetos muito ruins e que será perda de tempo trabalhar para ela em termo de conhecimento.

Enfim, testes pode ser uma coisa ruim dependendo da situação.

flws

Aqui onde trabalho temos clientes que chegam a faturar + de 1000 notas fiscais de uma vez. Algoritmos ruins para esse tipo de aplicação simplesmente inviabilizam todo um sistema. É por isso que aqui dá-se preferência para quem conhece pelo menos o básico de complexidade de algoritmos (“decorando” as complexidades das ordenações básicas e buscas sobre as estruturas de dados básicas já é o suficiente) do quem treinou o framework da moda.

J

Acho que o Tópico esta entrando em outras questões, o objetivo aqui tá mais focado em sair do aperto de situações onde provas e conceitos são exigidos ao candidato algo como questões que são colocadas por consultorias, estou dando exemplos para questões que envolve matemática e ciências, quero colocar também aplicações para calculo financeiro, quanto a questionar o que é aceitável nas aplicações comerciais isso já é um outro tema que poderia ser aberto.

// Calculate the sum of the integers from 1 to 10
Resposta:

public class Calculate
{
  public static void main( String[] args )
   {
   int sum;
     intx;

		x = 1;	// initialize x to 1 for counting
		sum = 0; // initialize sum to 0 for totaling

		while ( x <= 10 ) // while x is less than or equal to 10
		{
		sum += x; // add x to sum
        	++x; // increment x
		} // end while

		System.out.printf( "The sum is: %d\n", sum );
	} // end main
} // end class Calculate
V

Eu só colocaria uma questão dessas se tivesse alguma observação do tipo:
“Calcule Fibonacci de forma recursiva, garantindo que o tempo será próximo da forma não recursiva”.

Outra possibilidade seria colocar uma questão de Fibonacci para um corte rápido. Quando a prova tem muitos candidatos (como em grandes empresas), você põe uma questão dessa para uma eliminação rápida daqueles que nem isso responderem.

Em todo caso, fico feliz de saber que o Márcio Duran (Jonas Backer) finalmente resolveu estudar Java.

V

Uma questão que eu colocaria numa prova seria essa:

Complete a função abaixo:

void drawRegularPolygon(Graphics2D g2d, int sides, int radius) { //Seu código aqui }

Usando da classe Graphics2D apenas o método g2d.drawLine(float x1, float y1, float x2, float y2).
Valide o fato de sides ter que ser >= 3.

J

Exemplo Poligono

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Color;

import jv.viewer.PvDisplay;
import jv.viewer.PvViewer;
import jv.geom.PgPolygon;

public class RegularPolygon extends Applet
{

   // This procedure is executed when the applet starts
   public void init()
   {
      // Viewer
      PvViewer viewer = new PvViewer(this, null);
       
      // Display
      PvDisplay disp = new PvDisplay();

      // Axes
      disp.showAxes(false);

      // Bounding box
      disp.showBndBox(true);

      // Background color
      disp.setBackgroundColor(Color.WHITE);

      // Regular polygon setup
      int n = 10; // Number of sides
      PgPolygon poly = new PgPolygon(3); // This is a 3D object
      poly.setName("Regular Polygon");
      poly.setGlobalEdgeColor(Color.blue);
      poly.setNumVertices(n + 1); // We need an extra vertice to
                                  // close the regular polygon.

      // Defining the vertices coordinates
      for (int i = 0; i <= n; ++i)
      {
         poly.setVertex(i, Math.cos(2*Math.PI*i/n),
                           Math.sin(2*Math.PI*i/n),
                           0);
      };

      // Register the regular polygon in the display
      disp.addGeometry(poly);

      // Applet layout, quite simple now
      setLayout(new BorderLayout());
      add(disp, BorderLayout.CENTER);
    }; // End of init()
};
J

ViniGodoy:
Uma questão que eu colocaria numa prova seria essa:

Complete a função abaixo:

void drawRegularPolygon(Graphics2D g2d, int sides, int radius) { //Seu código aqui }

Usando da classe Graphics2D apenas o método g2d.drawLine(float x1, float y1, float x2, float y2).
Valide o fato de sides ter que ser >= 3.

Estou falando de 3 Objetos ?

V

Duran, numa prova você não teria acesso à internet:
http://www.professores.uff.br/hjbortol/disciplinas/2005.1/gma04096/applets/lab03/RegularPolygon.html

Copiar o código dos outros é cola, e isso te desqualificaria da prova.

Além disso, você não tem as classes do <a href="http://www.javaview.de/" data-bbcode="true">JavaView</a>.

import jv.viewer.PvDisplay;

import jv.viewer.PvViewer;

import jv.geom.PgPolygon;

Como falei no enunciado, é só para usar o drawLine da classe Graphics.

A lógica do que você postou, entretanto, é bem próxima da solução do exercício.

R

ViniGodoy:
Uma questão que eu colocaria numa prova seria essa:

Complete a função abaixo:

void drawRegularPolygon(Graphics2D g2d, int sides, int radius) { //Seu código aqui }

Usando da classe Graphics2D apenas o método g2d.drawLine(float x1, float y1, float x2, float y2).
Valide o fato de sides ter que ser >= 3.

Confesso que demorou um pouco para cair a ficha:

void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
		if(sides < 3){
			throw new IllegalArgumentException("Não existe polígono com menos de 3 lados.");
		}
		
		class Rectangular{
			int x;
			int y;
			
			Rectangular(int x , int y){
				this.x = x;
				this.y = y;
			}
		}
		
		class Polar{
			int radius;
			double angleInRadius;
			
			Polar(int radius, double angleInRadius) {
				super();
				this.radius = radius;
				this.angleInRadius = angleInRadius;
			}
			
			Polar addAngle(double angleInRadius){
				return new Polar(radius, this.angleInRadius + angleInRadius);
			}

			public Rectangular toRectangular() {
				Rectangular rectangular = new Rectangular(0,0);
				
				rectangular.x = (int) (radius * Math.cos(angleInRadius));
				rectangular.y = (int) (radius * Math.sin(angleInRadius));
				
				return rectangular;
			}
		}
		
		final double STEP_SIZE_IN_RADIANS = (2.0 * Math.PI) / sides;
		Polar polar1 = new Polar(radius, 0);
		
		for(int i = 1 ; i <= sides ; i++){
			Polar polar2 = polar1.addAngle(STEP_SIZE_IN_RADIANS);
			
			Rectangular rectangular1 = polar1.toRectangular();
			Rectangular rectangular2 = polar2.toRectangular();
			
			g2d.drawLine(rectangular1.x, rectangular1.y, rectangular2.x, rectangular2.y);
			
			polar1 = polar2;
		}
	}
J

The length of the sides of an equilateral triangle are equal by definition. The length of a side of an equilateral triangle is conventionally represented by the variable s.

R

é o Duran … sem sombra de dúvidas …

J

é o Duran … sem sombra de dúvidas …

void drawRegularPolygon(Graphics2D g2d, int sides, int radius) { if(sides < 3){ throw new IllegalArgumentException("Não existe polígono com menos de 3 lados."); }

“Então acima de 10000 lados, existe Polígono”

R

é o Duran … sem sombra de dúvidas …

void drawRegularPolygon(Graphics2D g2d, int sides, int radius) { if(sides < 3){ throw new IllegalArgumentException("Não existe polígono com menos de 3 lados."); }

“Então acima de 10000 lados, existe Polígono”

Sim.

J

rmendes08:

“Então acima de 10000 lados, existe Polígono”

Sim. [/quote]

Então o que você defini acima de Myriagon ?

V

Um miriágono é um polígono tanto quanto um triângulo, um quadrilátero ou um pentágono.
Só o que muda é o número de vértices (10.000).

G

rmendes08:
Jonas backer:

“Então acima de 10000 lados, existe Polígono”

Sim.

Não, porque aí já ficou redondo faz tempo :slight_smile:

J

ViniGodoy:
Um miriágono é um polígono tanto quanto um triângulo, um quadrilátero ou um pentágono.
Só o que muda é o número de vértices (10.000).

Sim, e alguém afirmou o que não sabia

R

gomesrod:
rmendes08:
Jonas backer:

“Então acima de 10000 lados, existe Polígono”

Sim.

Não, porque aí já ficou redondo faz tempo :slight_smile:

hmmm … pra ser mais exato, fica mais redondo à medida que o número de lados se aproxima de infinito …

V

Achei legal a solução com um vôo nas coordenadas polares.

Outras formas de resolver seriam:

  • Usando diretamente cos e seno;
  • Usando o conceito de vetores;
  • Usando matrizes de transformação.

Claro que no fundo, todos são representações matemáticas que acabarão resultando nas mesmas contas.

J

ViniGodoy:
Achei legal a solução com um vôo nas coordenadas polares.

Outras formas de resolver seriam:

  • Usando diretamente cos e seno;
  • Usando o conceito de vetores;
  • Usando matrizes de transformação.

Claro que no fundo, todos são representações matemáticas que acabarão resultando nas mesmas contas.

void drawRegularPolygon(Graphics2D g2d, int sides, int radius) { if(sides < 3){ throw new IllegalArgumentException("Não existe polígono com menos de 3 lados."); }

This is not justice, not observed IllegalArgumentException missing requirements and justify even worse sides exactly where you actually have degrees in the angles available for the formation of polygons.

J

rmendes08:
gomesrod:
rmendes08:
Jonas backer:

“Então acima de 10000 lados, existe Polígono”

Sim.

Não, porque aí já ficou redondo faz tempo :slight_smile:

hmmm … pra ser mais exato, fica mais redondo à medida que o número de lados se aproxima de infinito …

void drawRegularPolygon(Graphics2D g2d, int sides, int radius) { if(sides < 3){ throw new IllegalArgumentException("Não existe polígono com menos de 3 lados."); }

Apresentou-se uma lógica, mas discordo sobre sides ainda não é correta a afirmação que justifique IlleglArgumentException, acho que isso ai tá mais pra justificar o algoritmo do que o que consiste ser Polígono.

V

Quer apostar quanto que ele pegou uma frase dele em português e jogou no google translator para passar para inglês e parecer mais sabido?

A frase não tem pé, nem cabeça, nem estrutura gramatical.

V

Jonas backer:

Apresentou-se uma lógica, mas discordo sobre sides ainda não é correta a afirmação que justifique IlleglArgumentException, acho que isso ai tá mais pra justificar o algoritmo do que o que consiste ser Polígono.

O erro está correto. Ter pelo menos 3 lados é a condição de existência de um polígono.
Menos que isso seria um segmento de reta ou um ponto.

Um polígono regular ainda tem uma característica extra: é convexo.

Com menos de 3 vértices, sequer define-se um plano. Polígonos, por definição, são figuras planares.

J

ViniGodoy:
Jonas backer:

Apresentou-se uma lógica, mas discordo sobre sides ainda não é correta a afirmação que justifique IlleglArgumentException, acho que isso ai tá mais pra justificar o algoritmo do que o que consiste ser Polígono.

O erro está correto. Ter pelo menos 3 lados é a condição de existência de um polígono.
Menos que isso seria um segmento de reta ou um ponto.

Um polígono regular ainda tem uma característica extra: é convexo.

Com menos de 3 vértices, sequer define-se um plano. Polígonos, por definição, são figuras planares.

Meu Inglês ? Ficou melhor !!!

If all sides and angles are equivalent, the polygon is called regular. Polygons can be convex, concave, or star. The word “polygon” derives from the Greek poly, meaning “many,” and gonia, meaning “angle.”

J

ViniGodoy:
Jonas backer:

Apresentou-se uma lógica, mas discordo sobre sides ainda não é correta a afirmação que justifique IlleglArgumentException, acho que isso ai tá mais pra justificar o algoritmo do que o que consiste ser Polígono.

O erro está correto. Ter pelo menos 3 lados é a condição de existência de um polígono.
Menos que isso seria um segmento de reta ou um ponto.

Um polígono regular ainda tem uma característica extra: é convexo.

Com menos de 3 vértices, sequer define-se um plano. Polígonos, por definição, são figuras planares.

“A condição de existência é ângulos”

V

Já que tem gente que fugiu da escola:

V

Que tal citar as fontes?
http://mathworld.wolfram.com/Polygon.html

Onde diz:
Definição 1:

Definição 2:

Definição 3:

Também gostaria de saber como se forma um ângulo com apenas 2 vértices. Nesse caso, você teria apenas 1 segmento de reta, e nenhum ângulo.
Portanto, nem pela definição que você mesmo colocou seria um polígono. Com 1 único vértice, você passa a ter apenas um ponto, ou seja, nenhum ângulo.

E, com 3 vértices numa figura aberta existirá apenas 1 único ângulo, e não “muitos angulos”, como prega a morfologia da palavra polígono (que não é a descrição do que ela significa).

Aliás, nem sei pq estou perdendo tempo discutindo. Pelo mau inglês e pelos textos mau cortados, não resta dúvida de que vc seja mesmo o Marcio Duran.

J

ViniGodoy:
Já que tem gente que fugiu da escola:
http://www.brasilescola.com/matematica/poligonos.htm

Não tem problema, eu gosto de compartilhar o meu conhecimento:

fica a vontade:


Drawing each diagonal in a regular polygon, let R(n) denote the number of regions into which the polygon is divided. Then R(n) is given by

Where

For n=1, 2, …, the values of R(n) are given by 1, 4, 11, 24, 50, 80, 154, 220, 375, … (Sloane’s A007678 ).

For n odd, all terms but the first drop out, so the numbers of regions are given by

J

Sim, esqueci de colocar a FONTE:
Fonte do conteúdo, tudo sobre Poligono

R

Jonas backer:
ViniGodoy:
Já que tem gente que fugiu da escola:
http://www.brasilescola.com/matematica/poligonos.htm

Não tem problema, eu gosto de compartilhar o meu conhecimento:

fica a vontade:


Drawing each diagonal in a regular polygon, let R(n) denote the number of regions into which the polygon is divided. Then R(n) is given by

Where

For n=1, 2, …, the values of R(n) are given by 1, 4, 11, 24, 50, 80, 154, 220, 375, … (Sloane’s A007678 ).

For n odd, all terms but the first drop out, so the numbers of regions are given by

pois é , dá pra ver que você conhece muito de copiar/colar …

A

Márcio Duran,
Não é colocando equações que nem você sabe o que significa que você vai chegar a algum lugar. O ViniGodoy está certo, simples assim. Não é nenhum golpe de ego não, ele só está correto, pode ficar tranquilo…

ViniGodoy,
Não conheço quase nada de geometria (e sim, eu era um mau-aluno de geometria na escola), me responda: em que casos se usa um miriágono? Qual é o seu uso?

[]'s

J

“Truth is so obscure in these times, and falsehood so established, that, unless we love the truth, we cannot know it”

V

Também desconheço. Creio que seja só teórico.
Eu sei que os filósofos usavam formas geométricas assim para mostrar que qualquer polígono convexo com um número grande o suficiente de lados será praticamente indistinguível de um círculo (Descartes falava em polígonos com 1 milhão de lados).

J
import java.awt.*;
import javax.swing.*;

public class BasicDraw {
    public static void main(String[] args) {
        new BasicDraw();
    }
    BasicDraw() {
        // Create a frame
        JFrame frame = new JFrame();

        // Add a component with a custom paint method
        frame.getContentPane().add(new MyComponent());

        // Display the frame
        int frameWidth = 300;
        int frameHeight = 300;
        frame.setSize(frameWidth, frameHeight);
        frame.setVisible(true);
    }

    class MyComponent extends JComponent {
        // This method is called whenever the contents needs to be painted
        public void paint(Graphics g) {
            // Retrieve the graphics context; this object is used to paint shapes
            Graphics2D g2d = (Graphics2D)g;

            // Draw an oval that fills the window
            int x = 0;
            int y = 0;
            int width = getSize().width-1;
            int height = getSize().height-1;
            g2d.drawOval(x, y, width, height);
        }
    }
}

Acredito que seria a melhor forma para o solução do problema representação em ângulos

public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D)g;

    g2d.drawLine(x1, y1, x2, y2);
    g2d.drawOval(x, y, w, h);
    g2d.drawRect(x, y, w, h);

    // A start angle of 0 represents a 3 o'clock position, 90 represents a 12 o'clock position,
    // and -90 (or 270) represents a 6 o'clock position
    int startAngle = 45;
    int arcAngle = -60;
    g2d.drawArc(x, y, w, h, startAngle, arcAngle);

    g2d.drawRoundRect(x, y, w, h, arcWidth, arcHeight);

    Polygon polygon = new Polygon();
    polygon.addPoint(x, y);
    // Add more points...
    g2d.drawPolygon(polygon);
}
L

Pelo que vejo vc almeja uma vaga de programador junior.
Eu não sei que tipo de empresa vc tá pensando ir fazer essa prova, mas a não ser que seja uma fabrica de jogos, vc deveria se focar em outras questões, mais do que no desenho.
O avaliador vai querer saber mais sobre sua lógica de programação e algumas técnicas básica do que seu conhecimento sobre as peculiaridades da linguagem. Claro, algumas bibliotecas são imprescindíveis: java.util, java.io e java.lang.
Exemplo do que vc deve saber:
Pilha, listas encadeadas, ordenação, OO, MVC…
Trabalhar com Strings…

J

“Nem tem problema, vou lhe servir um pão de plastico para você comer, mas se você achar que estou lhe enganando eu vou lhe dizer que a ideia foi só sua”

J
rmendes08:
ViniGodoy:
Uma questão que eu colocaria numa prova seria essa: Complete a função abaixo:
void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
   //Seu código aqui
}

Usando da classe Graphics2D apenas o método g2d.drawLine(float x1, float y1, float x2, float y2).
Valide o fato de sides ter que ser >= 3.

Confesso que demorou um pouco para cair a ficha:

void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
		if(sides < 3){
			throw new IllegalArgumentException("Não existe polígono com menos de 3 lados.");
		}
		
		class Rectangular{
			int x;
			int y;
			
			Rectangular(int x , int y){
				this.x = x;
				this.y = y;
			}
		}
		
		class Polar{
			int radius;
			double angleInRadius;
			
			Polar(int radius, double angleInRadius) {
				super();
				this.radius = radius;
				this.angleInRadius = angleInRadius;
			}
			
			Polar addAngle(double angleInRadius){
				return new Polar(radius, this.angleInRadius + angleInRadius);
			}

			public Rectangular toRectangular() {
				Rectangular rectangular = new Rectangular(0,0);
				
				rectangular.x = (int) (radius * Math.cos(angleInRadius));
				rectangular.y = (int) (radius * Math.sin(angleInRadius));
				
				return rectangular;
			}
		}
		
		final double STEP_SIZE_IN_RADIANS = (2.0 * Math.PI) / sides;
		Polar polar1 = new Polar(radius, 0);
		
		for(int i = 1 ; i <= sides ; i++){
			Polar polar2 = polar1.addAngle(STEP_SIZE_IN_RADIANS);
			
			Rectangular rectangular1 = polar1.toRectangular();
			Rectangular rectangular2 = polar2.toRectangular();
			
			g2d.drawLine(rectangular1.x, rectangular1.y, rectangular2.x, rectangular2.y);
			
			polar1 = polar2;
		}
	}

"Um monte de código sem sentido algum"

L

Jonas backer:
Luiz Augusto Prado:

Pelo que vejo vc almeja uma vaga de programador junior.
Eu não sei que tipo de empresa vc tá pensando ir fazer essa prova, mas a não ser que seja uma fabrica de jogos, vc deveria se focar em outras questões, mais do que no desenho.
O avaliador vai querer saber mais sobre sua lógica de programação e algumas técnicas básica do que seu conhecimento sobre as peculiaridades da linguagem. Claro, algumas bibliotecas são imprescindíveis: java.util, java.io e java.lang.
Exemplo do que vc deve saber:
Pilha, listas encadeadas, ordenação, OO, MVC…
Trabalhar com Strings…

“Nem tem problema, vou lhe servir um pão de plastico para você comer, mas se você achar que estou lhe enganando eu vou lhe dizer que a ideia foi só sua”

por que? porque “jacaré não come alpiste”?

Se acredita que seu avaliador vai comer esse pão, boa sorte.
Já ouviu falar do “quarto chinês” ?
Ninguem vai muito longe trabalhando em um quarto assim.

V

Bom, já que o Duran boicotou o próprio tópico dele, topico trancado.

Criado 13 de junho de 2012
Ultima resposta 18 de jun. de 2012
Respostas 50
Participantes 11