① 一道程序员面试题,设计,很难
状态0:初始状态
状态1:我是端点A
状态2:我可能是端点B
状态3:我是端点B
状态4:我是路人
消息0:初始化消息
消息1:这是来自端点A的消息,我正在寻找端点B
消息2:你的另一边还有我,你不是端点B
消息3:那么谁是端点B呢
消息4:这是来自端点B的消息
消息5:这是来自端点A的消息
消息6,路人请在下一次接到消息5时开灯,端点A请开灯
回馈,将消息发给触发当前消息的一端(谁给我的我就给谁)
转发:将消息发给触发当前消息的另一端(谁给我的我就不给谁)
广播:将消息发给两边(给两边都发送)
收到初始化消息的人将自己置为状态1,并转发消息1,
收到消息1的人将自己置为状态2,并转发消息1,回馈消息2,
收到消息2的人将分为两种:
状态1,不改变状态,并回馈消息3
状态2,将自己置为状态4,不发送消息
收到消息3的人将分为两种:
状态4,不改变状态,转发消息3
状态2,将自己置为状态3,回馈消息4
/*
至此为止,三种角色已经明确,两个端点分别是状态1和状态3,状态4是路人
*/
可能收到消息4的人分为三种:
端点A,回馈消息5
路人,转发消息4
端点B,回馈消息4
收到消息5的人分为两种:
路人,转发消息5
端点B,
/*
当端点B收到消息5的时候,端点B还正在无限发送消息4,端点A正在无限发送消息5,路人正在无限转发消息5和4
*/
此时所有路人都可能收到两种消息,4和5,端点A只会收到4端点B只会收到5
端点A收到消息5则回馈消息4
端点B收到消息4则回馈消息5
路人只负责转发
我已经尽力了,只能做到这个程序,这个是结合网络路由协议设计出来的一种通信机制,但是也只能做到目前的程度,经过我一周零散时间的考虑,想要实现同时开灯,必须在状态里边提供计数器,能给个整数就行,这样就可以通过对信号进行计数来约定时间,否则我真的想不到办法了,以上答案仅仅是一个思路,而且我认为这个题缺乏必要条件,希望对你有帮助。
② 面试没过的那些程序员,都去哪里了
面试没过的那些程序员,都去哪里了?面试没过的程序员大概都去转行了吧。做自己善长的事情固然很好,毕竟自己适应了这么多年,属于自己的舒适区。作为一名程序员,自然善长敲代码,做一名老师或许是不错的选择。当然如果不想继续呆在舒适区,想换一个行业,想挑战一下自己,做销售或者自己自主创业都是不错的选择;为自己的未来做一个长远的规划,好好想想自己的职业理想是什么,然后一步一个脚印朝着自己的职业理想迈进。程序员到三十多岁就会有一种危机感,消除危机感最好的方法就是学习,提升自己。
③ 面试java程序员不下7次了,都没面试上,什么原因
面试java程序员失败可能的原因如下:
java的基础知识掌握不够,很多大公司比较注重的是java的基础,比如一些集合类、多线程等,反而对于一些流行的框架之类的在乎,因为如果基础不够,学习任何框架都会非常困难。
只掌握java这一种编程语言,对于主流的语言没有更多的认识。其实java里面包含了很多其他的语言,比如html、jquery、html5等等,需要具备丰富的开发经验。
缺乏实际的项目经验,仅仅做一些上级实验,是远没有达到公司层面的要求的。