面哲学

  Roseman的招聘哲学总结

  • 自我介绍让大家放松进入状态。

  • 通过深度提问以辨别应聘者的对项目的参与程度。

  • 现场写代码。

  • 探究算法,数据结构,代码组织和简洁性。

  • 故意提出指示不明的问题,观察应聘者是否发问。

  • 通过设计问题考察其全局思考的能力。

  • 确认应聘者具备公司所需要的核心才能。

  • 让面试变得有难度却

转载于:https://my.oschina.net/u/1771959/blog/649053

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
哲学家进餐问题是一个经典的并发编程问题,它描述了五个哲学家共用一张圆桌,每个哲学前有一盘条和一只叉子,哲学家的生活方式只有思考和进餐两种,当一个哲学家想要进餐时,他必须同时拿起他左右两边的叉子,进餐完毕后放下叉子继续思考。这个问题的难点在于如何避免死锁和饥饿现象。 在Linux系统下,可以使用gcc编译器来编译实现哲学家进餐问题的代码。以下是一个简单的实现: ```c #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #define N 5 // 哲学家数量 #define LEFT (i+N-1)%N // 左边的哲学家 #define RIGHT (i+1)%N // 右边的哲学家 #define THINKING 0 // 思考状态 #define HUNGRY 1 // 饥饿状态 #define EATING 2 // 进餐状态 pthread_mutex_t mutex; // 互斥量数组 pthread_cond_t cond[N]; // 条件变量数组 int state[N]; // 哲学家状态数组 void test(int i) { if (state[i] == HUNGRY && state[LEFT] != EATING && state[RIGHT] != EATING) { state[i] = EATING; printf("Philosopher %d is eating.\n", i); pthread_cond_signal(&cond[i]); } } void pickup_forks(int i) { pthread_mutex_lock(&mutex); state[i] = HUNGRY; printf("Philosopher %d is hungry.\n", i); test(i); while (state[i] != EATING) { pthread_cond_wait(&cond[i], &mutex); } pthread_mutex_unlock(&mutex); } void return_forks(int i) { pthread_mutex_lock(&mutex); state[i] = THINKING; printf("Philosopher %d is thinking.\n", i); test(LEFT); test(RIGHT); pthread_mutex_unlock(&mutex); } void *philosopher(void *arg) { int i = *(int *)arg; while (1) { printf("Philosopher %d is thinking.\n", i); sleep(1); pickup_forks(i); sleep(1); return_forks(i); } } int main() { pthread_t tid[N]; int i, id[N]; pthread_mutex_init(&mutex, NULL); for (i = 0; i < N; i++) { pthread_cond_init(&cond[i], NULL); state[i] = THINKING; id[i] = i; pthread_create(&tid[i], NULL, philosopher, &id[i]); } for (i = 0; i < N; i++) { pthread_join(tid[i], NULL); } return 0; } ``` 上述代码中,使用了互斥量和条件变量来实现哲学家进餐问题。互斥量用于保护共享资源,条件变量用于线程之间的同步。在pickup_forks函数中,当一个哲学家想要进餐时,他会将自己的状态设置为HUNGRY,并尝试拿起左右两边的叉子,如果左右两边的哲学家都没有在进餐,那么他就可以开始进餐了。在return_forks函数中,当一个哲学家进餐完毕后,他会将自己的状态设置为THINKING,并将左右两边的哲学家都唤醒,让他们有机会进餐。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值