第一篇:Hibernate(6)—— 一對多和多對多關聯關系映射(xml和注解)總結
Hibernate(6)—— 一對多和多對多關聯關系映射(xml和注解)總結
涉及的知識點總結如下:
? One to Many 映射關系
o 多對一單向外鍵關聯(XML/Annotation)o 一對多單向外鍵關聯(XML/Annotation)o 懶加載和積極加載
o 一對多雙向外鍵關聯(XML/Annotation)? Many to Many 映射關系
o 多對多單向外鍵關聯(XML/Annotation)o 多對多雙向外鍵關聯(XML/Annotation)o set的inverse元素詳解
? ? 問題小結
關聯關系的優缺點
多對一單向外鍵關聯關系
注意多對一關聯是多方持有一方的引用。看一個例子,去淘寶購物,那么一個淘寶用戶可以對應多個購物訂單,如圖所示:
多的一方是Orders,持有一方的引用,也就是Users,而在Users中無需作任何定義,從訂單到用戶的關系是單向多對一關聯。對應數據庫就是:
還有比如說學生和班級的關系,多個學生可以屬于同一個班級,這就是從學生到班級也是典型的單向多對一關系,看代碼實現:
基于注解的多對一單向外鍵關聯:
單向多對一關聯中,多方需要持有一方的引用,那么多方(學生類)需要額外配置,需要對持有的一方引用使用注解@ManyToOne(cascade={CascadeType.ALL}, fetch=FetchType.EAGER),設置為級聯操作和饑渴的抓取策略,@JoinColumn(name=“cid”),而一方(教室類)無需做任何多方的定義。
注意;多方必須保留一個不帶參數的構造器!
importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;
//班級類,在多對一關系中屬于一的方,不持有其他多余的配置,反而是被多方持有 @Entity public class ClassRoom { private intcid;//班級編號
private String cname;//班級名稱
// 自動增長的主鍵 @Id @GeneratedValue publicintgetCid(){ returncid;}
public void setCid(intcid){ this.cid = cid;}
public String getCname(){ returncname;}
public void setCname(String cname){ this.cname = cname;} } View Code 一方——班級類無需做多余的定義,下面是多方——學生實體和配置:
importjavax.persistence.CascadeType;importjavax.persistence.Entity;importjavax.persistence.FetchType;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;importjavax.persistence.JoinColumn;importjavax.persistence.ManyToOne;
//學生實體類,屬于多對一的多方,持有班級(一方)的引用 @Entity public class Students { private intsid;//編號
private String sname;//姓名
private ClassRoom classroom;//學生班級
//注意:多方一定要顯式的定義不帶參數的構造方法 public Students(){ }
public Students(String sname){ this.sname = sname;} // 多方使用注解:@ManyToOne // fetch=FetchType.EAGER,急加載,加載一個實體時,定義急加載的屬性會立即從數據庫中加載。
// 全部級聯操作,referencedColumnName顯式設置數據庫字段名cid,不寫默認就是和name一樣的。
@ManyToOne(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)@JoinColumn(name=“cid”,referencedColumnName=“cid”)publicClassRoomgetClassroom(){ return classroom;}
public void setClassroom(ClassRoom classroom){ this.classroom = classroom;}
// 自動增長主鍵 @Id @GeneratedValue publicintgetSid(){ returnsid;}
public void setSid(intsid){ this.sid = sid;}
public String getSname(){ returnsname;}
public void setSname(String sname){ this.sname = sname;} } View Code 下面測試:先生成數據庫腳本,再進行學生對象的插入
public class TestStudentsByAnno { private static SessionFactorysessionFactory;
@Before public void setUp()throws Exception { System.out.println(“setUp()...”);sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();}
@After public void tearDown()throws Exception { System.out.println(“tearDown()...”);sessionFactory.close();}
@Test public void testSave(){ Session session = sessionFactory.getCurrentSession();Transaction tx = session.beginTransaction();
try { ClassRoom c = new ClassRoom();c.setCname(“computer001”);
Students s = new Students(“zhangsan”);s.setClassroom(c);
session.save(s);tx.commit();} catch(Exception ex){ ex.printStackTrace();tx.rollback();} }
@Test @Ignore public void testSchemaExport(){ SchemaExport se = new SchemaExport(new AnnotationConfiguration().configure());se.create(true, true);} } View Code 反向創建表的數據庫腳本如下:
create table ClassRoom(cid integer not null auto_increment, cnamevarchar(255), primary key(cid))create table Students(sid integer not null auto_increment, snamevarchar(255), cid integer, primary key(sid))
插入一個學生對象,會自動生成如下語句:
ClassRoom c = new ClassRoom();c.setCname(“computer001”);
Students s = new Students(“zhangsan”);s.setClassroom(c);
session.save(s);tx.commit();View Code Hibernate: insert into ClassRoom(cname)values(?)Hibernate: insert into Students(cid, sname)values(?, ?)插入成功:
基于xml配置實現多對一單向外鍵關聯
View Code
一方(教室類)無需做任何多方的定義。只需要維護好自己的屬性配置即可。而多方只需要加上
hibernate.cfg.xml里加上
? ? 多對一時候,多方設置EAGER加載,一對多的時候,一方設置LAZY加載 多對多關聯,多方需要保留一個無參構造器。
第二篇:一對多通信報告
蘇州科技大學電子信息與智能實驗中心
JAVA高級程序設計 大作業
--一對多聊天程序設計
專業年級 班 級 學 號 姓 名 成 績 任課教師
計算機科學與技術
2016年5月20日
一對多的聊天程序設計報告
1任務概述
編寫一對多的聊天程序,程序由服務器和客戶總原則兩部分組成,服務器和客戶端通過對象傳送實現消息傳遞,兩部分的交互方式如下:
(1)客戶端發送命令:
(2)客戶端發送命令:
(3)客戶端發送命令:
(4)服務器端向指定客戶端發送命令:
(5)客戶端發送命令:
-1-
錄,服務器如果允許注銷,則返回消息:
請用以下方法之一實現:
(1)使用JAVA本身的序列化方法序列化命令對象;
(2)采用XML序列化命令對象;
(3)采用JSON序列化命令對象; 系統需求分析
(1)、該程序實現局域網內的聊天功能,包括服務器端程序和客戶端程序兩部分。
客戶端程序:可連接到服務器,并將消息發送到服務器端和接受服務器端發送來的信息。
服務器端程序:負責發送接收和發送給客戶的信息
功能如下:
連接:當客戶端運行起來時客戶客戶端就連上了服務器端,當然首先要運行服務器,然后再運行客戶端。
(2)、在客戶端具備提示選項、注冊、登錄、聊天、退出系統主要功能。
提示選項功能:
-2-
為了明確用戶做什么功能的操作而設置的提示選項模塊。注冊系統功能需求:
如果選擇的事注冊模塊,則完成用戶的注冊,如果注冊成功,則 可以進入登錄模塊,系統并返回提示數據,注冊失敗也回返回響應的提示數據。
登陸系統功能需求:
如果選擇的事登錄模塊,則用戶進入登錄功能,登錄成功則向客戶端返回登陸信息,同時在服務器端顯示出來。建立與服務器的連接并登陸,能顯示登陸錯誤信息。用戶登陸成功,將保存其號碼,以便下次登陸時,不必再輸入而可以直接選擇,顯示登陸時間。因此必須要求后臺管理系統能根據系統需求,動態的、準確的更新系統數據。
聊天管理功能需求:
如果選擇的事聊天模塊,則進入聊天功能。與好友聊天,實現一對一和多對多聊天;有信息提示,提示到來信息,轉發給消息指定的用戶。
退出功能需求:
如果選擇的事退出模塊或者是收到相應的退出消息,則聊天結束,服務器會發送響應的數據。
-3- 系統設計
我的思路是實現客戶端與服務器端進行一對多的通信,這是一種最簡單的聊天工具,也是對于一個初學者說是最容易理解的。但我們實際生活中的聊天模型不是這樣的,例如:騰訊QQ聊天工具是把服務器作為一個中轉站,一個客戶端向服務器端發出請求申請連接,另一個客戶端也向服務器端請求連接,一個客戶端先把信息發送到服務器,然后服務器把信息轉發給另一個客戶端,如果把它做成和騰訊QQ差不多,那還是有一定難度的,那就必須要掌握多線程,其實多線程是一個難點。
我的思路如下:
實現客戶端與服務器端的一對多通信,也就是客戶端將對象發送給發送給服務器,服務器接收信息,然后服務器將回應對象發送給客戶端,客戶端接收,就這樣你一句我一句。你要寫這個簡單的聊天工具首先你首先要起一個窗口,客戶端一個服務器端一個,在建立客戶端與服務器的鏈接,運用socket和serversocket來編程,然后再對象輸入輸出流把客戶端的信息發送給服務器端。
我建立了如下類:
-4-
主要用到的知識如下: 1)線程
2)Java異常機制的處理
3)網絡編程中的socket和serversocket 4)對象輸入輸出流 5)hashMap 系統實現
Command類:
public class Command implements Serializable{ private Date sendDate;
public Date getSendDate(){
return sendDate;} public void setSendDate(Date sendDate){
-5-
this.sendDate = sendDate;} Login類:
public class Login extends Command { private String name;public String getName(){
return name;} public void setName(String name){
this.name = name;} } Logout類:
public class Logout extends Command { private String name;
public String getName(){
return name;}
public void setName(String name){
this.name = name;}
} Message類:
public class Message extends Command { private String from;private String to;private String message;public String getFrom(){
return from;} public void setFrom(String from){
this.from = from;} public String getTo(){
return to;} public void setTo(String to){
this.to = to;} public String getMessage(){
return message;
-6-
} public void setMessage(String message){
this.message = message;} Register類:
public class Register extends Command{ private String name;
public String getName(){
return name;}
public void setName(String name){
this.name = name;} Result類:
public class Result extends Command{ private Command command;private String state;
public Result(Command command, String state){
super();
this.command = command;
this.state = state;} public Command getCommand(){
return command;} public void setCommand(Command command){
this.command = command;} public String getState(){
return state;} public void setState(String state){
this.state = state;} Client類:
public class Client { private static Command c;private static Result rs;public static void main(String[] args)throws Exception{
Socket socket = new Socket(”127.0.0.1“,8888);
-7-
OutputStream os=socket.getOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(os);
InputStream reader = socket.getInputStream();
ObjectInputStream ois=new ObjectInputStream(reader);
Scanner input= new Scanner(System.in);
boolean f=true;//循環判斷
String name=null;//發送方姓名
String toName=null;//接收方姓名
int temp=0;//用于定位是否是已經在聊天了
int i=0;
int logout=0;//判斷是否退出
System.out.println(”請選擇:1.注冊 2.登陸 3.發消息 4.退出:“);
while(f){
i=input.nextInt();
if(i==1){//注冊
System.out.print(”我是:“);
name=input.next();
Register register=new Register();
register.setName(name);
register.setSendDate(new Date());
Result result = new Result(register, ”1“);
oos.writeObject(result);
rs=(Result)ois.readObject();
System.out.println(”服務器響應: command=“+rs.getCommand()+ ”state=“+rs.getState());
}else if(i==2){//登錄
System.out.print(”我是:“);
// String name=”xu“;
name=input.next();
Login login=new Login();
login.setName(name);
// c.setSendDate(new Date());
Result result = new Result(login, ”2“);
oos.writeObject(result);
rs=(Result)ois.readObject();
System.out.println(”服務器響應: command=“+rs.getCommand()+ ”state=“+rs.getState());
}else if(i==3){//聊天中...-8-
System.out.print(”接受方姓名:“);
toName=input.next();
System.out.print(”我(“+name+”)說:“);
//name=input.next();
String message=input.next();;
Message message2=new Message();
message2.setFrom(name);
message2.setTo(toName);
message2.setMessage(message);
temp=1;
if(message.equals(”logout“)){//如果輸入logou就代表退出聊天服務器
logout=1;
}else{
// c.setSendDate(new Date());
Result result = new Result(message2, ”3“);
oos.writeObject(result);
//讀到消息
Message m=(Message)ois.readObject();
String str=”我對“+toName+ ”說:“+m.getMessage();
System.out.println(str);
FileInformation(str,”我“);
}
}
if(i==4||logout==1){//退出
Logout logout2=new Logout();
logout2.setName(name);
//c.setSendDate(new Date());
Result result = new Result(logout2, ”4“);
oos.writeObject(result);
rs=(Result)ois.readObject();
System.out.println(”服務器響應: command=“+rs.getCommand()+ ”state=“+rs.getState());
f=false;
}
}
//System.out.println(”歡迎再次光臨!bye“);
ois.close();
oos.close();
socket.close();
-9-
} public static void FileInformation(String texts,String name){//顯示收到的文本
JFrame showInfo=new JFrame();
JPanel jp=new JPanel();
JTextArea text=new JTextArea(20,20);//文本區
text.append(texts+”n“);//輸入
jp.add(text);
showInfo.add(jp);
showInfo.setTitle(name+”回答!“);
showInfo.setVisible(true);
showInfo.setSize(300,200);
showInfo.setLocation(500, 500);
showInfo.setDefaultCloseOperation(1);} }
SocketHandler類:
public class SocketHandler implements Runnable { private Socket socket;private Result rs;private String name;ObjectOutputStream oos;Scanner input=new Scanner(System.in);public SocketHandler(Socket socket){
this.socket = socket;
} @SuppressWarnings(”unchecked“)public void run(){
try {
InputStream reader=socket.getInputStream();
ObjectInputStream ois=new ObjectInputStream(reader);
OutputStream os=socket.getOutputStream();
oos=new ObjectOutputStream(os);
String client = ”<“ + socket.getInetAddress().toString()+ ” : “ + socket.getPort()+ ”>“;
boolean f=true;
while(f){
rs=(Result)ois.readObject();
if(rs.getState().equals(”1“))//
-10-
{
name=((Register)(rs.getCommand())).getName();
Server.users.put(name, oos);//存儲寫入圖中
if(name.equals(”“)){
Register register=new Register();
rs.setCommand(register);
rs.setState(”fail“);
oos.writeObject(rs);
}else{
Register register=new Register();
rs.setCommand(register);
rs.setState(”ok“);
oos.writeObject(rs);
}
}else if(rs.getState().equals(”2“))//
{
name=((Login)(rs.getCommand())).getName();
Server.users.put(name, oos);//存儲寫入圖
if(name.equals(”“)){
Login login=new Login();
rs.setCommand(login);
rs.setState(”fail“);
oos.writeObject(rs);
}else{
Login login=new Login();
rs.setCommand(login);
rs.setState(”ok“);
oos.writeObject(rs);
}
}
else if(rs.getState().equals(”3“))//用于轉發 信息message from=”xu“ to=”zhang“ message=”ddd“ />
{
//int count=0;//計數器
String toName=((Message)(rs.getCommand())).getTo();//得到收件人的名字
String message=((Message)(rs.getCommand())).getMessage();//得到發送的信息
Message message2=new Message();
message2.setTo(toName);
message2.setMessage(message);
-11-
oos.writeObject(message2);
oos = Server.users.get(toName);
if(oos!=null){
oos.writeObject(message2);//向另一客戶端寫入信息
oos.flush();
}else{
oos.writeBytes(”對不起!沒有此用戶!請檢查......“);
}
} else if(rs.getState().equals(”4“))//退出登錄//
{
name=((Logout)(rs.getCommand())).getName();
Server.users.remove(name);//刪除用戶名
rs.setState(”logout“);
oos.writeObject(rs);
break;
}else{
oos.writeBytes(”輸入有誤!請重新輸入“);
}
oos.flush();
}
oos.close();
ois.close();
socket.close();
} catch(Exception e){
e.printStackTrace();
}
} public static void FileInformation(String texts){//顯示收到的文本
JFrame showInfo=new JFrame();
JPanel jp=new JPanel();
JTextArea text=new JTextArea(20,20);//文本區
text.append(texts+”n“);//輸入
jp.add(text);
showInfo.add(jp);
showInfo.setTitle(”服務端相應!“);
showInfo.setVisible(true);
showInfo.setSize(300,200);
showInfo.setLocation(500, 500);
showInfo.setDefaultCloseOperation(1);
-12-
} } Server類:
public class Server { public static HashMap
ServerSocket server = new ServerSocket(8888);
while(true){
System.out.println(”正在等待。。");
Socket socket = server.accept();
SocketHandler handler = new SocketHandler(socket);
Thread thread = new Thread(handler);
thread.start();
} } } 系統測試
-13-
6總結
通過本次聊天的設計,我對網絡編程有了更深入的理解與認識。了解了socket編程技術,對于TCP協議有了更深入的理解。我明白了對網絡通訊程序的設計的原理和過程的透徹理解,是網絡通訊程序的前提。
我在代碼編寫的時候,使用了集成開發工具eclipse,所以編程的效率相對較高。這個聊天程序只是實現了基本的功能,而且并沒有提供較為友好的圖形界面。
通常,網絡應用程序包含兩個獨立的應用程序:客戶程序和服務器程序。但是,也可以設計同時完成這兩種功能的程序,例如,一些服務器程序如果不能完成一個服務請求時,它將轉而充當客戶程序,向其它服務器程序請求信息。
通過這次的設計,我明白了很多。我知道自己在實踐動手能力方面還有很大欠缺,做出能夠聊天的程序增加了我對網絡編程的興趣。我也認識到了自己在編程方面的很多不足,對整個協議棧的了解還不太清晰,以后得總結一下這方面的知識。我會更加努力,平時注重提 -14-
高自己的實踐動手能力,爭取更大的進步。參考文獻
[1] 李鐘尉,陳丹丹.java項目開發案例全程實錄(第2版)2011.[2] 劉長炯.MyEclipse6 Java開發中文教程[M].北京:電子工業出版社 2007.[3] 李鐘蔚.JAVA開發實戰寶典[M].北京:清華大學出版社 2009 [4] 馮建華,周立柱,郝曉龍.數據庫系統設計與原理.[M].北京:清華大學出版社 2007 [5] 張海藩.軟件工程導論(第5版).[M].北京:清華大學出版社 2007 [6] 印雯.Java語言與面向對象程序設計[M].北京:清華大學出版 2000.[7] Swing ,David M.Geary.Java2圖形設計[M].北京:機械工業出版社 2000.[8] 霍頓.Java2入門經典(JDK5)[M].北京: 機械工業出版社 2006.-15-
第三篇:“一對一、一對多”結對幫扶機制
哈巴格希街道辦事處貧困大學生 “一對一、一對多”結對幫扶長效機制
為了發展壯大街道辦事處“貧困大學生、貧困黨員”救助基金,更多的解決和救助轄區貧困大學生解決就學難問題,幫助他們完成學業,特制定貧困大學生“一對一、一對多”結對幫扶長效機制。
“一對一、一對多”幫扶方案就是聯系轄區慈善機構、企業和成功人士與貧困大學生進行結對幫扶,根據幫扶者意愿一家慈善機構、企業、成功人士長期幫扶一位或是多位貧困大學生,幫扶期限為應屆貧困大學生入學至學業完成為止,為貧困學生的生活、實習、就業等提供多方面的幫助,結對雙方要長期聯系,被幫扶學生定期向結對慈善機構、企業或是結對的成功人士反饋自己的學習及生活狀況。具體實施措施如下:
第一,廣泛宣傳,大力倡導。根據街道辦事處的統一部署,制定和出臺幫扶結對實施方案,積極聯系轄區內熱心慈善事業、有社會影響力的企業家、外出創業成功人士,通過他們的示范和帶動,不斷增強慈善事業的感染力和凝聚力,使更多的企業和成功人士能參與到此次結對幫扶活動中來,伸出援助之手救助更多的貧困大學生完成學業。
第二,建立健全結對企業與幫扶大學生的基礎信息臺賬。走訪聯系轄區企業,建立結對企業與轄區2011年貧困應屆大學生的基礎信息臺賬。結對幫扶臺賬的建立有利于街道更好的了解和掌握貧困大學生信息,便于結對企業對所幫扶學生以后的就學、生活、就業提供更多的幫助,加強了幫扶學生與結對企業的溝通與聯系。
第三,規范貧困大學生救助申請程序,通過申請、審批、審核三道程序嚴把審批關。救助大學生首先要領取和填寫《哈巴格希街道辦事處貧困大學生救助申請表》、然后將申請表提交村民委員會核實蓋章,再由村民委員提交辦事處進行審批,辦事處相關人員通過走訪入戶、核查無誤最后確定為救助對象。
第四,加強結對慈善機構、企業、成功人士與幫扶大學生的長期聯系,所幫扶大學生定期以書信、電話、E—mail等方式向結對企業、慈善機構、成功人士反饋自己的學習成績、生活狀況等信息,加強交流。寒暑期,有打工或是對口專業實習意愿的大學生可以主動聯系結對幫扶企業、慈善機構、成功人士,結對企業再有條件的情況下,向幫扶大學生提供打工實習信息和崗位。
第五,精心組織,加強監管,正確引導。辦事處將要對貧困大學生救助名單、結對幫扶企業進行及時張榜公布,每位救助貧困學生以及每項救助支出都將接受社會的監督,嚴格審批手續,確保每一分捐贈款都用在轄區貧困學生的社會救助上。
貧困大學生“一對一、一對多”結對幫扶長效機制的建立,有利于哈巴格希街道辦事處“貧困大學生、貧困黨員”救助基金的發展壯大,解決了只為貧困學生救助一部分學費而今后生活依然困難的弊端,更為貧困學生畢業以后的就業提供了一定的幫助。
附:
1、哈巴格希街道辦事處貧困大學生申請救助表
2、結對企業與幫扶貧困大學生基礎信息臺賬 注:此方案最終解釋權歸哈巴格希街道辦事處社會事務辦公室所有。
社會事務辦公室 二〇一一年六月八日
第四篇:關聯交易回避管理制度
8.7.5 關聯交易回避管理制度
下面是某企業針對關聯交易制定的關聯交易回避管理制度,供讀者參考。
關聯交易回避管理制度
第1條 為了規范企業的關聯交易,減少關聯交易中的風險,特制定本制度。
第2條 本制度中的關聯方是指一方控制、共同控制另一方或對另一方施加重大影響,以及兩方或兩方以上同受一方控制、共同控制或重大影響。
第3條 本制度中的關聯交易是指本企業或控股子公司與關聯方之間發生的轉移資源、勞務或義務的行為,而不論是否收取價款。具體主要包括但不限于下列17項交易。
1.購買或出售資產。
2.對外投資(含委托理財、委托貸款等)。3.提供財務資助。
4.提供擔保(反擔保除外)。5.租入或租出資產。
6.簽訂管理方面的合同(含委托經營、受托經營等)。7.贈于或受贈資產。8.債權或債務重組。9.研究與開發項目的轉移。10.簽訂許可協議。
11.購買原材料、燃料、動力。12.銷售產品、商品。13.提供或接受勞務。14.委托或受托銷售。15.與關聯人共同投資。
16.其他通過約定可能造成資源或義務轉移的事項。17.法律法規認定的屬于關聯交易的其他事項。
第4條 董事會審議關聯交易時,關聯董事需回避審議,也不得代替其他董事進行表決。第5條 有下列情形之一者,視為關聯董事。1.交易對方。
2.在交易對方或能控制該交易對方的企業任職的。3.擁有交易對方直接或間接控制權的。
4.與交易對方及其控制人關系密切的家庭成員。
5.與交易對方及其控股股東的董事、監事和高級管理人員關系密切的家庭成員。6.由主管機構認定的其他原因使企業的審議結果受到其影響的人員。
第6條 董事會因關聯董事的回避無法形成決議時,需將關聯交易提交股東大會審議。第7條 股東大會審議關聯交易時,關聯股東需回避審議。第8條 有下列情形之一者,視為關聯股東。1.交易對方。
2.被交易對方直接或間接控制的。3.擁有交易對方直接或間接控制權的。
4.與交易對方受同一法人或自然人直接或間接控制的。
5.與交易對方或其關聯人存在尚未履行完畢的股權轉讓協議或其他協議導致其表決權受到限制或影響的。
6.主管機構認定的可能造成企業對其利益傾斜的法人或自然人。
第9條 企業中與交易對象有關聯的員工在簽署關聯交易合同時,只能代表一方簽署。第10條 本制度由總裁辦公室制定,解釋權、修改權歸屬總裁辦公室。第11條 本制度自總裁審批之日起實施,修改時亦同。
第五篇:校園招聘一對多自我介紹示范
校園招聘一對多自我介紹示范
求職背景
面試地點: 華南理工大學,中海石油校園招聘會現場
目標職位: 商務代表
面試類型: 幾十名同學持簡歷逐一入場,面向三位面試官做一個2~3分鐘的自我介紹。
申請人概況: 自稱“太普通”的一個華工女生,從未得過獎學金,也未曾在社團中擔任要職。
自我介紹原文
大家好,我叫張一凡,首先我想衷心感謝各位領導冒著大雨從深圳趕到華工,給我們一次寶貴的面試機會。面試機會對于我們應屆畢業生來說,絕對就像今天的天氣,春雨貴如油; 或者說,貴如石油!(點評: 在自我介紹之前,利用當天的天氣表示對招聘單位的感激之情,是非常高明的一個互動環節。)
我來自遼寧省錦州市,我的母親也是一位石油工作者,她在錦州煉油六廠工作。由于我的父親多年以前就下崗了,我家的生活和我的教育全部依賴母親每個月兩千多塊錢的收入。所以,我對石油行業充滿了感恩之情,沒有她,我的大學教育很可能會缺失。(點評: 通過“母親的工作”把自己和用人單位巧妙地結合起來,又是一個高明的互動。由此可以看出,成功的自我介紹絕對不僅僅是介紹“自我”,而是時時刻刻把“自我”和“對方”結合起來。)
在華工,我所學的專業是工商管理,和剛才做自我介紹的張優和李秀同學相比,我非常遺憾地說,自己的學習成績只是中等水平,原因主要有兩方面,一是華工的確人才濟濟,二是我本人把相當一部分精力投入到了兼職工作中,因為我確實需要兼職的收入。我累計擔任了八名中小學生的數學與英語家教,參加了二十多次校園促銷,比如雅芳化妝品促銷、卡西歐電子字典促銷等等。銷售工作鍛煉了我的勇氣和耐力,我相信這兩種素質將會對我未來的工作很有幫助!(點評: 第二部分,和其他同學相比,她的成績中等甚至是下等是塊硬傷,如果不自己把這塊硬傷揭開,面試官會覺得如鯁在喉。主動暴露自己的弱點,則表現出一凡的勇敢與誠實,也巧妙地使面試官把注意力轉移到她的兼職經驗上,化弱勢為優勢!)
今天我來申請中海石油的“商務代表”一職,說實話,除了張經理剛剛介紹過的工作內容之外,我并不十分清楚具體的工作要求是什么。在此,我謹淺顯地談談我個人的理解,我想,這個職位需要這樣一個人: 第一,她要了解并熱愛石油行業; 第二,她要形象端正,表達能力強,思維嚴謹; 第三,作為應屆畢業生,她必須具備良好的學習心態和踏踏實實的工作態度。對于這三點,我自信自己能夠滿足,我希望自己能夠有機會進入下一輪面試,屆時再詳細地向您闡述。最后,再次表示我的感謝!(鞠躬)(點評: 大學生對于就業崗位往往一知半解,如果不懂裝懂反而引人反感。實話實說,為自己又贏一分!不過大家絕對不要盲目抄襲此答案,說自己不了解所申請的職位是相當危險的招數,用不好等于引火燒身。一凡并非真正不了解這個職位,一來她說自己上網做過調查,二來她的理解基本正確,她用的是以退為進的方法。)