During the exam (which I had to administer remotely this time) I made it abundantly clear that they cannot use any kind of AI assistance for their work. No ChatGPT, no Copilot, no Bing AI, no Google Bard, and also no Googling, etc. I repeated this several times and also wrote it in bold font on the top of the test. I really didn't have any way to enforce this, but I was hoping people would be honest.
I'm pretty sure that most of the students were honest on this; the answers I got generally fine, but had grammatical mistakes and were "basically correct but had light factual errors that are common with people new to programming but aren't bad enough to count as 'wrong'". One student, however, who has submitted broken sentences and broken code the entire semester, managed to suddenly have decent writing skills, decent explanations of everything, and his code was clean and concise.
I'm about 95% sure he used ChatGPT to generate answers to the questions. I tried getting ChatGPT (and Bard and Bing AI) to give me a word-for-word copy of what he submitted, but I couldn't. It got somewhat close, but never an exact match.
Technically, it's possible that he just studied very very hard and his code and grammar improved. It's also technically possible that he used Grammarly to make sure his writing was ok (which was technically against the rules but I wouldn't really consider cheating in a Java class), and so I just had to swallow my pride and grade the test assuming he was being honest.
It's kind of upset me all day; I have worked pretty hard trying my best to be available to students if they have questions, and I worked pretty hard to try and make sure that the final exam was a reasonable level of difficulty. I think most of my students were fine, but one bad apple is enough to really ruin my day.