[OFF - Pra pensar] - Questão lógica interessante da prova OCAJP

19 respostas
jaboot

x += x++ * x++ * x++;

Fonte

19 Respostas

alandiniz

só completando

int x = 2; x += x++ * x++ * x++; System.out.println(x);

fonte: http://www.theserverside.com/tutorial/OCPJP-and-OCAJP-Mock-Exam-Question-for-the-Java-7-Exam

maior_abandonado

a questão aqui não é nem lógica mas sim o conhecimento do operador… mas eu também acho interessante, pegadinha.

F

Interessante mesmo, mas achei fácil pra uma prova de certificação. Tem umas que dão um nó na cabeça que dá vontade de desistir.

Alexandre_Saudate

Não é apenas uma pegadinha - no mundo real, é absolutamente inútil.

rafael_jesus

Concordo totalmente com vc, há tanta coisa que o cara tem que estudar e colocar em pratica no trabalho que chega ser infinito…

Ai vem os experientes e dizem…“OOh mais isso é importante” conceito e tals…

Falar quando vc já manja pa caramba é facil, mas quando vc passa apuros por não saber o mínimo de JavaScript, CSS, JQuery, Hibernate, JPA, Struts ou VRaptor, Spring, SQL, SOAP, J2ME, na empresa onde trabalho temos que saber o mínimo disso ai pra começar a brincar,

Ai penso em estudar para a certificação agora, mas oque eu aprenderia? Algoritimos?

Mas tem que ter essa bagaça de certificação num tem jeito…

Mas nem ta dificíl tbm…o problema é qdo tem 70 do mesmo estilo, a cabeça frita…

Alexandre_Saudate

Concordo totalmente com vc, há tanta coisa que o cara tem que estudar e colocar em pratica no trabalho que chega ser infinito…

Ai vem os experientes e dizem…“OOh mais isso é importante” conceito e tals…

Falar quando vc já manja pa caramba é facil, mas quando vc passa apuros por não saber o mínimo de JavaScript, CSS, JQuery, Hibernate, JPA, Struts ou VRaptor, Spring, SQL, SOAP, J2ME, na empresa onde trabalho temos que saber o mínimo disso ai pra começar a brincar,

Ai penso em estudar para a certificação agora, mas oque eu aprenderia? Algoritimos?

Mas tem que ter essa bagaça de certificação num tem jeito…

Mas nem ta dificíl tbm…o problema é qdo tem 70 do mesmo estilo, a cabeça frita…

Pois é. Acho que esse tipo de pergunta só serve para ensinar para o programador o que NÃO fazer numa aplicação de verdade. O que fazer, de fato, vem na certificação seguinte - de desenvolvedor.

[]'s

M

embora concorde que seja inútel, sabe precedencia de operador ajuda para J2SE.

e pesando bem poderia ser pior, tipo :

int x = 2;
x += x++ ^ x++ << x++;
maior_abandonado

nunca duvide da criatividade alheia…

criatividade…rs

alandiniz

Resultado: 26
:smiley:

Jaba

Concordo totalmente com vc, há tanta coisa que o cara tem que estudar e colocar em pratica no trabalho que chega ser infinito…

Ai vem os experientes e dizem…“OOh mais isso é importante” conceito e tals…

Falar quando vc já manja pa caramba é facil, mas quando vc passa apuros por não saber o mínimo de JavaScript, CSS, JQuery, Hibernate, JPA, Struts ou VRaptor, Spring, SQL, SOAP, J2ME, na empresa onde trabalho temos que saber o mínimo disso ai pra começar a brincar,

Ai penso em estudar para a certificação agora, mas oque eu aprenderia? Algoritimos?

Mas tem que ter essa bagaça de certificação num tem jeito…

Mas nem ta dificíl tbm…o problema é qdo tem 70 do mesmo estilo, a cabeça frita…

Você não aprenderia só algoritmos. Você está radizalizando um pouco a situação.

Você aprende conceitos importantissimos sobre Collections: dá pra usar Hibernate e JPA sem Collections?
Você aprende conceitos importantissimos sobre Servlets e Requisições: dá pra usar Struts e Vraptor sem esse conhecimento?
Você aprende conceitos importantissimos sobre Componentes de Negócios e Afins: dá pra realmente usar o Spring sem?

E por aí vai…

Certificação é base. Eu encaro da seguinte maneira: você tem base? Ótimo! Você não tem? Vá atrás. E qual é a melhor maneira de se obter base? Na minha opnião, a certificação.

Leia e reflita: http://andersontorres.wordpress.com/2011/06/02/ocjp-vantagem-perda-de-tempo/

rafael_jesus

Concordo totalmente com vc, há tanta coisa que o cara tem que estudar e colocar em pratica no trabalho que chega ser infinito…

Ai vem os experientes e dizem…“OOh mais isso é importante” conceito e tals…

Falar quando vc já manja pa caramba é facil, mas quando vc passa apuros por não saber o mínimo de JavaScript, CSS, JQuery, Hibernate, JPA, Struts ou VRaptor, Spring, SQL, SOAP, J2ME, na empresa onde trabalho temos que saber o mínimo disso ai pra começar a brincar,

Ai penso em estudar para a certificação agora, mas oque eu aprenderia? Algoritimos?

Mas tem que ter essa bagaça de certificação num tem jeito…

Mas nem ta dificíl tbm…o problema é qdo tem 70 do mesmo estilo, a cabeça frita…


1: Você aprende conceitos importantissimos sobre Servlets e Requisições: dá pra usar Struts e Vraptor sem esse conhecimento?
2: Você aprende conceitos importantissimos sobre Componentes de Negócios e Afins: dá pra realmente usar o Spring sem?

Frameworks Web vieram no mercado para facilitar o desenvolvimento, desacoplar, etc…É possível fazer um Software (com desenvolvimento ágil) moderno só com Servlet e requisições, sem Struts e VRaptor???Desde quando vc ve isso na certificação OCAJP??

Atenção eu me refiro a certificação OCAJP e nem todas as certificações que existem…além do mais o certificado não quer dizer nem de longe se vc é um baita desenvolvedor ou não, mas aumenta muito a suas chances…Não estou dizendo para não tirar a certificação, muito pelo contrário, no meu estado atual tenho outras coisas a serem estudadas, do que estudar algoritimos e pegadinhas da OCAJP

E não é a única maneira de se obtar base não…

Jaba

Você não leu direito o que eu postei, preste atenção.

Não foi o que eu disse: eu disse que sem esse conhecimento, você pode até fazer, mas não saberá o que está fazendo. E nesse quesito, me referi á OCWCD, já que citei as CERTIFICAÇÕES em geral.

Concordo plenamente. Mas aumenta as suas chances porque comprova a sua base e o fato de que você pelo menos conhece as ramificações da especificação que você está trabalhando.

Se você encara dessa maneira, é uma pena. Existem algoritmos e pegadinhas, mas além de tudo, são perguntas que realmente trabalham o fato de você ter ou não agregado os conceitos cobrados na especificação.

Pelo menos o caminho é a melhor maneira. Você conhece outra?

InsaneChess

Minha humilde e sincera opnião :wink:

O que você considera como “Base” de desenvolvimento?
A especificação você vai pegando conforme for precisando…e geralmente depois de um tempo sem uso esquece, puramente conteúdo técnico, onde no livro na maioria das vezes é desnecessário.

Já o que eu chamo de “base” de desenvolvimento é algo que você leva pra vida, ou seja, conceitos.
Sejam eles de Orientação a Objetos, TDD, Servlets e Jsp, Scrum…javascript…

Basta saber o “fluxo” de como as coisas são e o por quê disso…com exemplos e exercicioss objetivos já o torna capaz de se virar quando for necessário.

Ou seja, entre indicar “SCJP - Kathy Sierra” e “Clean Code - Robert Martin” para alguém…
Não teria dúvidas de indicar Clean Code, TDD…DDD…

Será que consegui me expressar? =/
A base é feita de Many Conceitos :wink:

(E quem não leu, trate de ler Clean code xP)

rafael_jesus

Ai brother quem não leu o post direito foi você, Olha o assunto “[OFF - Pra pensar] - Questão lógica interessante da prova OCAJP”

EU ME REFERI A OCAJP FILHÃO, Vc que se referiu a OCWCD e a sei lá mais o que…

Quer dizer entaum que agora o cara que não tem certificação não tem base porque não existe outra maneira de ter uma boa base??

Vc só pode estar de bricadeira, vai fundo filho… Eu vi um mulk de Brasília de 13 anos dando palestra e pelo seu conceito se ele não tiver certificação ele não tem base, ja que não existe outra maneira de ter base, pois só tem base aqueles que tem certificação?

rafael_jesus

InsaneChess:
Minha humilde e sincera opnião :wink:

Basta saber o “fluxo” de como as coisas são e o por quê disso…com exemplos e exercicioss objetivos já o torna capaz de se virar quando for necessário.

(E quem não leu, trate de ler Clean code xP)

Falo tudo…

Jaba

Ai brother quem não leu o post direito foi você, Olha o assunto “[OFF - Pra pensar] - Questão lógica interessante da prova OCAJP”

EU ME REFERI A OCAJP FILHÃO, Vc que se referiu a OCWCD e a sei lá mais o que…

Não sabe brincar, não desce pro parquinho. Se for para se estressar, tentar brigar, pode ficar no seu mundinho de faz de contas.

Eu não escrevi isso. Leia novamente o meu post.

Sério? Era sobre o quê, um case de gerenciamento de mesada com JSF 2/Prime + JPA/Hibernate e Spring?

Não é só quem tem certificação quem tem base, você não leu meu post. Pra mim, a melhor maneira de se CONSEGUIR base é sim o caminho para a certificação.

Ai sim! Admiro sua posição! Também não estou aqui para subjugar ninguém, apesar de ás vezes dar a impressão. Quando posto, é porque acho considerável o esforço da discussão para que não somente eu, mas todos nós possamos agregar um determinado valor em cima do assunto debatido.

O que você considera como “Base” de desenvolvimento?
A especificação você vai pegando conforme for precisando…e geralmente depois de um tempo sem uso esquece, puramente conteúdo técnico, onde no livro na maioria das vezes é desnecessário.

Já o que eu chamo de “base” de desenvolvimento é algo que você leva pra vida, ou seja, conceitos.
Sejam eles de Orientação a Objetos, TDD, Servlets e Jsp, Scrum…javascript…

Basta saber o “fluxo” de como as coisas são e o por quê disso…com exemplos e exercicioss objetivos já o torna capaz de se virar quando for necessário.

Base pra mim é a mistura dos dois, do conteúdo técnico + conceitos. Um exemplo? Threads. Você conhece alguém que efetivamente trabalha com a API de Threads? É muito dificil. Mas é um dos tópicos da certificação. Quando você trabalhar com WEB e lhe falarem que cada requisição recebida em um Servlet se transforma em uma Thread por trás do framework que você usa, você vai saber o que é e vai ter noção do que acontece. Isso é base! É claro, como você falou: Com o tempo, a gente vai mudando o foco: mas no momento em que você precisar aplicar o seu conhecimento sobre aquele determinado conceito, no fundo ele vai estar lá.

Ou seja, entre indicar “SCJP - Kathy Sierra” e “Clean Code - Robert Martin” para alguém…
Não teria dúvidas de indicar Clean Code, TDD…DDD…

Eu já não penso assim, se fosse para quem estivesse começando, primeiro o da Kathy, e depois um Clean Code, Effective Java…
Normalmente quem lê DDD acha a leitura meio pesada, eu mesmo achei. Mas o Eric Evans fez um bom trabalho!

Concerteza.

D

Mesmo após ler esses posts, ainda acho que a certificação é o melhor jeito de testar os seus conhecimentos pois não é uma prova fácil de se fazer. Contém muitos algoritmos, pegadinhas que não acabam mais, podemos dizer que , se não estudar mesmo, cara, com certeza não irá passar…
Mas base de desenvolvimento, ainda acho que não é somente tirando a certificação que podemos dizer que já se tem base. Lógico que, vc adquiri um grande conhecimento pois tem que estudar muito, mas infelizmente não é só isso, tem tantas outras coisas pra se estudar como struts, spring, TDD, DDD, Scrum, Javascript, JQuery entre outras coisas que temos que saber pra poder desenvolver (cara, eu citei esses itens por que trabalho com web) e assim vai, estudar muito é o resumo disso tudo…
Isso, no meu humilde ponto de vista, e é lógico que sempre vai ter alguém pra discordar, mas ainda acho que pra dizer que, para ter base de desenvolvimento, só a certificação SOMENTE, é pouco… Para ter base de desenvolvimento exige um pouco mais…Pelo menos é isso que vejo aqui na empresa. Dizer que a certificação dá base, acaba parecendo que quem não tirou não entende nada… Claro que, eu mesmo, estou estudando pra tirar a certificação, e digo mais, vou ter que me esforçar muito, pois é uma prova difícil. Mas vou tirar não só pra ter base, e sim, uma para testar meus conhecimentos em java e outra por que o mercado dá uma atenção a mais pra quem tem, por isso, por que não tirar não é mesmo?
Só relembrando, é apenas a minha opinião, e como já diz o velho ditado :
“Opinião é que nem bunda, dá quem quer!”

rafael_jesus

Jaba:
Ai brother quem não leu o post direito foi você, Olha o assunto “[OFF - Pra pensar] - Questão lógica interessante da prova OCAJP”

EU ME REFERI A OCAJP FILHÃO, Vc que se referiu a OCWCD e a sei lá mais o que…

Não sabe brincar, não desce pro parquinho. Se for para se estressar, tentar brigar, pode ficar no seu mundinho de faz de contas.

Eu não escrevi isso. Leia novamente o meu post.

Sério? Era sobre o quê, um case de gerenciamento de mesada com JSF 2/Prime + JPA/Hibernate e Spring?

Não é só quem tem certificação quem tem base, você não leu meu post. Pra mim, a melhor maneira de se CONSEGUIR base é sim o caminho para a certificação.

Ai sim! Admiro sua posição! Também não estou aqui para subjugar ninguém, apesar de ás vezes dar a impressão. Quando posto, é porque acho considerável o esforço da discussão para que não somente eu, mas todos nós possamos agregar um determinado valor em cima do assunto debatido.

O que você considera como “Base” de desenvolvimento?
A especificação você vai pegando conforme for precisando…e geralmente depois de um tempo sem uso esquece, puramente conteúdo técnico, onde no livro na maioria das vezes é desnecessário.

Já o que eu chamo de “base” de desenvolvimento é algo que você leva pra vida, ou seja, conceitos.
Sejam eles de Orientação a Objetos, TDD, Servlets e Jsp, Scrum…javascript…

Basta saber o “fluxo” de como as coisas são e o por quê disso…com exemplos e exercicioss objetivos já o torna capaz de se virar quando for necessário.

Base pra mim é a mistura dos dois, do conteúdo técnico + conceitos. Um exemplo? Threads. Você conhece alguém que efetivamente trabalha com a API de Threads? É muito dificil. Mas é um dos tópicos da certificação. Quando você trabalhar com WEB e lhe falarem que cada requisição recebida em um Servlet se transforma em uma Thread por trás do framework que você usa, você vai saber o que é e vai ter noção do que acontece. Isso é base! É claro, como você falou: Com o tempo, a gente vai mudando o foco: mas no momento em que você precisar aplicar o seu conhecimento sobre aquele determinado conceito, no fundo ele vai estar lá.

Ou seja, entre indicar “SCJP - Kathy Sierra” e “Clean Code - Robert Martin” para alguém…
Não teria dúvidas de indicar Clean Code, TDD…DDD…

Eu já não penso assim, se fosse para quem estivesse começando, primeiro o da Kathy, e depois um Clean Code, Effective Java…
Normalmente quem lê DDD acha a leitura meio pesada, eu mesmo achei. Mas o Eric Evans fez um bom trabalho!

Concerteza.

Cara eu disse que quando o cara tem um mundo de coisas para estudar como eu me encontro agora,

Não há tempo de estudar pegadinhas e etc… pois nesse momento meu patrão não me paga por fazer algotitimos isolados, e sim para trazer resultados com softwares prontos.

Se ainda tenho um mundo infinito de estudos, é porque obviamente nada sei, eu sou totalmente a favor de tirar certificações, tem que estudar muito, muito mesmo vc que o diga, por isso que eu optei nesse momento em aprimorar meus conhecimento em DesignPatterns, Spring, JPA, Hibernate, Struts, JSF, JQuery, JavaScript e nem falamos ainda de Banco de Dados,

Saber um pouco de tudo disso pra min é ter uma base de como desenvolver um software e a certificação OCAJP te da um grande conhecimento da linguagem e como o Daniel disse para testar seus conhecimentos…

Mas issa é a minha opnião, que não precisa ser concordada por ninguém, porém pode ser aceita

Desculpe por escrever em chinês anteriormente.

Abrcs!!

zeigfried

Bom, falando da parte técnica que importa.
O operador de incremento pós-fixo tem precedência sobre o de multiplicação. Fonte: The Java Tutorial - Operators.

Lembrando que o operador de incremento pós-fixo usa o valor primeiro e faz o incremento depois, ou seja:

int x = 2;
int y = x++;
// aqui y = 2 e x = 3

A pegadinha da questão é que da próxima vez que você ler x após um incremento pós-fixo, independentemente dele estar na próxima linha como no exemplo anterior ou na mesma linha, o valor que você irá ler estará atualizado.

System.out.println(x++ + ", " + x); // Imprime 2, 3

Logo a expressão:

x += x++ * x++ * x++;

Deve ser entendida como:

2 + (x++ * x++ * x++) // lado esquerdo da expressão foi avaliado
 2 + (2 * 3 * 4) // Operadores de incremento pós-fixo
 2 + 24 // Multiplicação
 26 // Adição via atribuição composta

Esse é o tipo de assunto dos cursos de primeiro semestre da faculdade (Introdução a Ciências da Computação I, Algoritmos e Estruturas de Dados, etc). São as regrinhas chatas de precedência. Pense nelas como as regrinhas do uso de crase (que eu não aprendi até hoje por sinal hehehe); uma vez que você entenda elas isso tem um jeito de grudar no cérebro…

Criado 6 de fevereiro de 2012
Ultima resposta 8 de fev. de 2012
Respostas 19
Participantes 11